web-dev-qa-db-fra.com

Convertir la date au format AAAAMM

Je veux sélectionner value = 201301

select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))

il retourne 20131

quelle est la façon normale de faire cela?

36
loviji
SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
42
Hogan
SELECT CONVERT(nvarchar(6), GETDATE(), 112)
83
Hamlet Hakobyan

Je sais que c'est un sujet ancien, mais si votre version SQL server est supérieure à 2012.

Il existe une autre option simple que vous pouvez choisir, FORMATER fonction.

SELECT FORMAT(GetDate(),'yyyyMM')

sqlfiddle

6
D-Shih

En fait, ceci est le moyen approprié d’obtenir ce que vous voulez, à moins que vous ne puissiez utiliser MS SQL 2014 (qui permet enfin de créer des chaînes de format personnalisées pour la date et l’heure).

Pour obtenir yyyymm au lieu de yyyym, vous pouvez utiliser ce petit truc:

select 
 right('0000' + cast(datepart(year, getdate()) as varchar(4)), 4)
 + right('00' + cast(datepart(month, getdate()) as varchar(2)), 2)

C'est plus rapide et plus fiable que de récupérer des parties de convert(..., 112).

2
Luaan

Vous pouvez convertir votre date dans de nombreux formats, par exemple:

CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16

Syntaxe:

CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
  • Le code est un entier, ici 3 est la troisième mise en forme sans siècle, si vous voulez que le siècle change le code en 103.

Dans votre cas, je viens de convertir et restreindre la taille de nvarchar (6) comme ceci:

CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609

Plus d’informations sur: http://www.w3schools.com/sql/func_convert.asp

1
Ema.H

Une méthode plus efficace, qui utilise un calcul mathématique entier plutôt que des chaînes/varchars, produira un type int plutôt qu'un type chaîne: 

SELECT YYYYMM = (YEAR(GETDATE()) * 100) + MONTH(GETDATE())

Ajoute deux zéros au côté droit de l'année, puis ajoute le mois aux deux zéros ajoutés. 

0
Bill Stidham