J'utilise SQL Server 2008 R2. Je veux convertir la date du système à ce format: dd/mm/yy
"2013-01-01 00:00:00.000" to "Score Calculation - 10/01/13".
Ma colonne contient les données:
1. DMS01A13010101
2. RMS01A13010201
3. 44
4. 2013-01-01 00:00:00.000
Ce que je veux: si l’enregistrement a 2013-01-01 00:00:00.000
dans ce format, je ne change que pour Score Caculation - dd/mm/yy
Mon code est,
select
case
when (CHARINDEX(D30.SPGD30_TRACKED_ADJUSTMENT_X, '-*') > 0 or
CHARINDEX(D30.SPGD30_TRACKED_ADJUSTMENT_X, '*-') > 0)
then 'Score Calculation - ' + CONVERT(VARCHAR(8), D30.SPGD30_TRACKED_ADJUSTMENT_X, 1)
end checkthedate
from
CSPGD30_TRACKING D30
SELECT CONVERT(varchar(11),getdate(),101) -- mm/dd/yyyy
SELECT CONVERT(varchar(11),getdate(),103) -- dd/mm/yyyy
Vérifie ça . Je suppose que D30.SPGD30_TRACKED_ADJUSTMENT_X est de type datetime.
C'est pourquoi j'utilise la fonction CAST()
pour la transformer en expression de caractère car CHARINDEX()
fonctionne avec une expression de caractère.
De plus, je pense qu’il n’est pas nécessaire d’utiliser la condition OR.
select case when CHARINDEX('-',cast(D30.SPGD30_TRACKED_ADJUSTMENT_X as varchar )) > 0
then 'Score Calculation - '+CONVERT(VARCHAR(11), D30.SPGD30_TRACKED_ADJUSTMENT_X, 103)
end
MODIFIER:
select case when CHARINDEX('-',D30.SPGD30_TRACKED_ADJUSTMENT_X) > 0
then 'Score Calculation - '+
CONVERT( VARCHAR(11), CAST(D30.SPGD30_TRACKED_ADJUSTMENT_X as DATETIME) , 103)
end
Voir ce lien pour la conversion en d'autres formats de date: https://www.w3schools.com/sql/func_sqlserver_convert.asp
La requête ci-dessous entraînera le format dd/mm/yy
.
select LEFT(convert(varchar(10), @date, 103),6) + Right(Year(@date)+ 1,2)
Essaye ça
SELECT CONVERT(varchar(11),getdate(),101) -- Converts to 'mm/dd/yyyy'
SELECT CONVERT(varchar(11),getdate(),103) -- Converts to 'dd/mm/yyyy'
Plus d'informations ici: https://msdn.Microsoft.com/en-us/library/ms187928.aspx
La requête ci-dessous donnera le format jj-mmm-aa.
select
cast(DAY(getdate()) as varchar)+'-'+left(DATEname(m,getdate()),3)+'-'+
Right(Year(getdate()),2)
select convert(varchar(8), getdate(), 3)
utilisez simplement ceci pour jj/mm/aa et cela
select convert(varchar(8), getdate(), 1)
pour mm/jj/aa