111 votes

Comment convertir une date en chaîne de caractères en T-SQL ?

Je suis surpris de ne pas avoir trouvé cette question ici.

J'ai une variable de date et d'heure et je veux la convertir en une chaîne de caractères afin de pouvoir l'ajouter à une autre chaîne. Je veux que ce soit dans un format qui puisse être facilement reconverti en date et heure.

Comment puis-je le faire ?

(Je veux la partie date et la partie heure).

8voto

Jeremy1026 Points 2348

Vous pouvez utiliser le convert dans Microsoft SQL Server pour convertir une date en une chaîne de caractères. Un exemple de la syntaxe utilisée serait :

SELECT convert(varchar(20), getdate(), 120)

L'exemple ci-dessus renvoie la date et l'heure actuelles dans une chaîne de caractères au format de YYYY-MM-DD HH:MM:SS en horloge de 24 heures.

Vous pouvez changer le nombre à la fin de la déclaration en un des nombreux codes qui changeront le format des chaînes de caractères retournées. Une liste de ces codes peut être trouvée sur le MSDN dans l'onglet CAST et CONVERT section de référence.

2voto

Antonio Papa Points 458

Vérifiez la syntaxe CAST et CONVERT de t-sql :

http://msdn.microsoft.com/en-us/library/ms187928.aspx

2voto

Gaurav123 Points 713

Essayez ci-dessous :

DECLARE @myDateTime DATETIME
SET @myDateTime = '2013-02-02'

-- Convert to string now
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)

2voto

Jamie Marshall Points 434

De nombreuses personnes ont répondu à cette question, mais j'ai l'impression que la solution la plus simple a été laissée de côté.

SQL SERVER (je crois qu'il s'agit de 2012+) a des équivalents implicites de chaîne pour DATETIME2, comme indiqué ci-dessous ici

Consultez la section "Formats de chaîne littérale pris en charge pour datetime2".

Pour répondre explicitement à la question de l'OP :

DECLARE @myVar NCHAR(32)
DECLARE @myDt DATETIME2
SELECT @myVar = @GETDATE()
SELECT @myDt = @myVar
PRINT(@myVar)
PRINT(@myDt)

sortie :

Jan 23 2019 12:24PM             
2019-01-23 12:24:00.0000000

Note : La première variable ( myVar ) détient en fait la valeur '2019-01-23 12:24:00.0000000' également. Il est juste formaté en Jan 23 2019 12:24PM en raison du formatage par défaut défini pour SQL SERVER qui est appelé lorsque vous utilisez PRINT . Ne vous laissez pas déconcentrer par cela, la chaîne réelle dans (myVer) = '2019-01-23 12:24:00.0000000'

1voto

Arvis Iljins Points 127

Dans la procédure stockée pour moi fonctionne quelque chose comme ceci.

convert(varchar(10), StartingDate) AS 'StartingDate'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X