Obtenir seulement le mois et L'année à partir de la DATE SQL

J'ai besoin d'accéder seulement mois.Champ année à partir de la date dans SQL Server.

90
demandé sur Tanner 2009-11-23 12:15:31

17 réponses

En plus des suggestions déjà données, il y a une autre possibilité que je peux déduire de votre question:
- Vous voulez toujours que le résultat soit une date
- Mais vous voulez 'jeter' les jours, les heures, etc
- Laisser un champ de date Année/Mois uniquement

SELECT
   DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
   <your_table>

Cela obtient le nombre de mois entiers à partir d'une date de base (0), puis les ajoute à cette date de base. Ainsi arrondi au mois dans lequel la date est dans.

Remarque: dans SQL Server 2008, vous aurez toujours le temps attaché comme 00: 00: 00.000 Ce n'est pas exactement la même chose que de "supprimer" toute notation du jour et de l'heure. Aussi le jour fixé à la première. par exemple 2009-10-01 00: 00: 00.000

133
répondu MatBailie 2012-05-02 18:23:16
select month(dateField), year(dateField)
105
répondu Lucas Ayala 2009-11-23 09:18:53
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
29
répondu Adriaan Stander 2009-11-23 09:18:59
SELECT convert(varchar(7), getdate(), 126) 

Vous pouvez consulter ce site: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

21
répondu Renne007 2018-03-15 02:14:44
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear

La sortie ressemblera à: 'décembre 2013'

14
répondu Valya Sylevych 2014-06-11 00:19:17

Il y a deux fonctions SQL pour le faire:

Reportez-vous à la documentation liée pour plus de détails.

12
répondu Grzegorz Gierlik 2017-12-15 07:49:48

Cela peut également être utile.

SELECT YEAR(0), MONTH(0), DAY(0);

Ou

SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());

Ou

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
10
répondu NoNaMe 2015-07-29 05:40:59

Écrivons-le de cette façon: YEAR(anySqlDate) et MONTH(anySqlDate). Essayez-le avec YEAR(GETDATE()) par exemple.

10
répondu Philippe Grondier 2015-12-29 08:58:49
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month

example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1
8
répondu razvangry 2012-11-08 11:09:26

J'interprète votre question de deux façons.

A) vous avez seulement besoin de mois et D'année séparément, auquel cas voici la réponse

select 
        [YEAR] = YEAR(getdate())
        ,[YEAR] = DATEPART(YY,getdate())
        , [MONTH] = month(getdate())
        ,[MONTH] = DATEPART(mm,getdate())
        ,[MONTH NAME] = DATENAME(mm, getdate()) 

B)

Vous voulez afficher à partir d'une date donnée disons '2009-11-24 09:01:55.483' dans mois.Année format. Donc, la sortie devrait venir comme 11.2009 dans ce cas.

Si c'est supposé être le cas, essayez ceci (entre autres alternatives)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
5
répondu priyanka.sarkar 2009-11-24 04:22:39
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 
2
répondu Valya Sylevych 2014-06-11 04:53:50

CONCAT (datepart (yy, DATE), FORMAT (DATE,' MM'))

Vous donne par exemple 201601 si vous voulez un résultat à six chiffres

2
répondu Mike 2016-01-22 16:02:44

Essayez ceci

select to_char(DATEFIELD,'MON') from YOUR_TABLE

Par exemple.

select to_char(sysdate, 'MON') from dual
1
répondu Amin 2015-07-30 10:13:40

Certaines bases de données telles que MS ACCESS ou RODBC peuvent ne pas prendre en charge les fonctions SQL SERVER, mais pour toute base de données ayant la fonction FORMAT, Vous pouvez simplement faire ceci:

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
1
répondu Ibo 2018-04-11 18:14:33

MA base de données ne supporte pas la plupart des fonctions ci-dessus, mais j'ai trouvé que cela fonctionne:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

Par exemple: SELECT SUBSTR(created, 1,7) FROM table;

Renvoie l'année et le mois au format "AAAA-mm"

0
répondu mobfire 2017-03-09 11:59:05

Sélectionnez Convertir (varchar (11), transfer_date, 106)

M'a obtenu le résultat souhaité de la date formatée comme 07 Mar 2018

Ma colonne 'transfer_date' est une colonne de type datetime et j'utilise SQL Server 2017 sur azure

0
répondu Hasan Junaid Hashmi 2018-03-12 07:06:31

Pour le résultat: "AAAA-MM"

SELECT cast(ANS (), varchar) + '-' + cast(Mois() as varchar)

0
répondu Jelena Lazarevic 2018-07-12 09:29:01