Comment convertir la valeur datetime
en yyyymmddhhmmss
?
par exemple De 2014-04-17 13:55:12
Pour 20140417135512
Depuis SQL Server version 2012, vous pouvez utiliser:
SELECT format(getdate(),'yyyyMMddHHmmssffff')
Cela semble fonctionner:
declare @d datetime
set @d = '2014-04-17 13:55:12'
select replace(convert(varchar(8), @d, 112)+convert(varchar(8), @d, 114), ':','')
Résultat:
20140417135512
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '')
FORMAT()
est plus lent que CONVERT()
. Cette réponse est légèrement meilleure que celle de @ jpx car elle ne remplace que la partie heure de la date.
112 = yyyymmdd - no format change needed
108 = hh:mm:ss - remove :
SELECT CONVERT(VARCHAR, GETDATE(), 112) +
REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '')
Cette requête consiste à convertir la DateTimeOffset
au format yyyyMMddhhss
avec décalage. J'ai remplacé les traits d'union, colon(:), period(.)
des données, et ai conservé le trait d'union pour séparer Offset de la DateTime
.
SELECT REPLACE(SUBSTRING(CONVERT(VARCHAR(33),SYSDATETIMEOFFSET(),126), 1, 8), '-', '') +
SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126),'T',''),'.',''),':',''),9,DATALENGTH(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126)))
20090320093349 SÉLECTIONNER CONVERT (VARCHAR, @ date, 112) + LEFT (REMPLACE (CONVERT (VARCHAR, @ date, 114), ':', ''), 6)
Une autre option que j'ai googlé, mais contient plusieurs remplacer ...
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '')
aussi cela fonctionne aussi
SELECT replace(replace(replace(convert(varchar, getdate(), 120),':',''),'-',''),' ','')