web-dev-qa-db-fra.com

Obtenir uniquement le mois et l'année à partir de SQL DATE

J'ai besoin d'accéder uniquement à Month.Year à partir du champ Date dans SQL Server.

97
user160820

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 seulement 

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. Arrondissant ainsi au mois dans lequel la date est en.

Remarque: dans SQL Server 2008, l'heure restera attachée en tant que 00: 00: 00.000 Ce n'est pas exactement la même chose que "supprimer" toute indication de jour et d'heure ... premier. par exemple. 2009-10-01 00: 00: 00.000

142
MatBailie
select month(dateField), year(dateField)
109
Lucas Ayala
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
29
Adriaan Stander
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/

26
Renne007
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear

le résultat ressemblera à: 'décembre 2013'

14
Valya Sylevych

Il y a deux fonctions SQL pour le faire:

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

13
Grzegorz Gierlik

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

10
Philippe Grondier

Cela peut être utile aussi.

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

ou 

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

ou 

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
10
NoNaMe
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
razvangry

J'interprète votre question de deux manières.

a) Vous avez seulement besoin d'un mois et d'une année séparés, 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, dites '2009-11-24 09:01:55.483' dans MONTH.YEAR format. Donc, la sortie devrait venir comme 11.2009 dans ce cas.

Si cela est supposé être le cas, essayez ceci (parmi d'autres alternatives)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
5
priyanka.sarkar

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

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

2
Mike
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 
2
Valya Sylevych

Certaines bases de données telles que MS Access ou RODBC peuvent ne pas prendre en charge les fonctions SQL SERVER, mais vous pouvez le faire pour toute base de données comportant la fonction FORMAT:

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
2
Ibo

Essaye ça

select to_char(DATEFIELD,'MON') from YOUR_TABLE

par exemple.

select to_char(sysdate, 'MON') from dual
1
Amin
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')

Sortie: mars-2019

0
Amit Jaiswal

Pour le résultat: "AAAA-MM" 

SELECT cast (YEAR () comme varchar) + '-' + cast (Month () comme varchar)

0
Jelena Lazarevic

select convert (varchar (11), transfer_date, 106) 

m'a obtenu mon résultat souhaité de date au 07 mars 2018

Ma colonne 'transfer_date' est une colonne de type date-heure et j'utilise SQL Server 2017 sur Azure.

0

Obtenir le mois et l'année à partir de la date

DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)

SET @lcYear=(SELECT  DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT  DATEPART(MONTH,@Date))
0
JIYAUL MUSTAPHA

Requête: - Sélectionnez le nom de date (m, GETDATE ()) + '-' + cast (datepart (yyyy, GETDATE ()) en tant que varchar) en tant que FieldName

Sortie: - janvier-2019

datefield général, nous pouvons utiliser datename (m,) + '' + cast (datepart (yyyy,) as varchar) as FieldName

0
Deepak Tambe

Essaye ça:

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)

Résultat:

maio 2019

Si vous voulez dans une autre langue, remplacez ' pt-pt ' par l'un de ceux-ci dans link

0
Pedro

J'avais une exigence spécifique à faire quelque chose de similaire où il montrerait mois-année qui peut être fait par ce qui suit:

SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'

Dans mon cas particulier, il me fallait une abréviation de 3 lettres par mois avec une année à 2 chiffres ressemblant à ceci: SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'

0
N. Haut