SQL de type VarChar à ce Jour
hi
je suis en train de convertir un VarChar champ de date (par exemple, 20100320) à un véritable champ de date comme
'dd/mm/yyyy' (e.g. 20/03/2010).
J'ai essayé de deux façons:
a)
(SELECT MIN(CAST(A.DateOfAction AS Date)) AS Expr1
FROM ResAdm.Action A
WHERE (A.PersonID = P.PersonID))
AS 'Period From',
b)
(SELECT MIN(CONVERT(DATE, A.DateOfAction, 103)) AS Expr1
FROM ResAdm.Action A
WHERE (A.PersonID = P.PersonID))
AS 'Period From',
à la fois de produire le résultat comme
aaaa-mm-jj (par exemple 2010-03-20)
mais je veux que le résultat comme
jj/mm/aaaa (ex: 20/03/2010)
toute aide sera appréciée.
merci.
OriginalL'auteur Shariful | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Votre problème est que une fois que vous avez un format de date, SQL Server va le vider dans son format de date par défaut, qui vous ai découvert, c'est
yyyy-mm-dd
. Vous avez besoin de convertir dedate
àvarchar
pour obtenir le format que vous voulez. Mais pour convertir à partir de la date, vous devez d'abord les convertir à ce jour! Le 112 est le format pouryyyymmdd
, et 103 est le format de ladd/mm/yyyy
, c'est pourquoi vous avez besoin de ces formats. (Des livres de référence en Ligne pour les formats de date)OriginalL'auteur Jon
Vous pouvez utiliser
non seulement il est paresseux pour utiliser "varchar", mais c'est une très mauvaise habitude. Lorsque vous utilisez "varchar" sans une certaine longueur de votre en fait d'un "varchar(30)" avec peut être plus ou moins que vous avez réellement besoin. si elle est inférieure, alors vous aurez le silence de la troncature et un amusement de temps de débogage.
Declare @date de type nvarchar(10) set @date = '20100320' select convert(varchar(10), de CONVERTIR(datetime, @date, 109), 103)
OriginalL'auteur ashish.chotalia