13 votes

Comment convertir une colonne de texte en date dans SQL ?

J'ai une colonne qui est un texte :

Remarks (text, null)

Un exemple de valeur est

"5/21/2013 9:45:48 AM"

Comment puis-je le convertir en un format de date comme ceci :

"2013-05-21 09:45:48.000"

La raison de cette conversion est que j'essayais d'obtenir le nombre total d'heures entre une colonne de date et le cachet de la date dans la colonne Remarques. Je pensais à quelque chose comme ceci :

Remarks (text, null) - Date_Sent (datetime, null)

Pour être clair, les colonnes représentent la date à laquelle une demande d'un client a été envoyée ( Date_Sent ) et la dernière réponse faite par un représentant concernant la demande ( Response ), donc pour un échantillon de a Date_Sent ayant une valeur de "2013-05-21 08:00:00.000" et un Response avec une valeur de "5/21/2013 10:00:00 AM" je devrais obtenir une valeur de 2.00 (2 heures). Malheureusement, dans la base de données sur laquelle je travaille, Remarks est un texte et Date_Sent est une date.

17voto

Mikael Eriksson Points 77190

Utilisez convertir avec le style 101.

select convert(datetime, Remarks, 101)

Si votre colonne est vraiment text Vous devez convertir en varchar avant de convertir en datetime.

select convert(datetime, convert(varchar(30), Remarks), 101)

4voto

mmhasannn Points 10115

Dans SQL Server, le texte est converti en date

select cast('5/21/2013 9:45:48' as datetime)

2voto

Junu Points 49

Ça marche :

SELECT STR_TO_DATE(dateColumn, '%c/%e/%Y %r') FROM tabbleName WHERE 1

1voto

Greg Holst Points 480

Pour convertir une colonne existante avec des dates stockées en tant que varchar, procédez comme suit :

Ajouter une nouvelle colonne :

alter table1
    add column_new datetime

Coulez la valeur d'origine :

UPDATE table1
    SET column_new = CAST(column_old AS DATETIME)

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