0

J'ai une table où un nombre de dates est stocké en tant que type Decimal (9,0) dans la colonne [DATE_READ]. Je dois utiliser DATEADD sur ces entrées, donc je suis en utilisant le code suivant pour les convertir en varchar puis aux dates:Conversion du format de date SQL YYYYMMDD

CASE WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
     THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112)) 
     WHEN LEN(A.[DATE_READ]) = 8 
     THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112)) 

Mon problème est que seule la date montre comme si je 110 au lieu de 112 Dans la fonction DATEADD, seuls les 8 premiers caractères s'affichent. Il ressemble donc à "2012-12-" au lieu de "20121205". Cela ne me dérange pas quel est le format de la date, mais j'ai besoin de faire fonctionner mon code pour que je puisse voir les jours dans la sortie.

Répondre

0

Il vous manque la conversion finale à 112. Depuis DATEADD renvoie une date, vous devez mettre en forme cette date pour la sortie.

CONVERT(VARCHAR(8), 
CASE 
    WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
    THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112)) 
WHEN LEN(A.[DATE_READ]) = 8 
    THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112)) END, 
112) 
+0

Merci, c'était ce dont j'avais besoin! – mdarr