0
votes

J'ai besoin de convertir cette chaîne en DateTime dans SQL Server

chaîne: xxx pré>

résultat attendu: p> xxx pré>

comme un datetime code>. p> Query Utilisé: P>

SELECT CONVERT(DATETIME, '01/04/2019 01:50:31.230000000', 113)  


2 commentaires

DateTime Les valeurs n'ont pas de format. Ils sont stockés dans un format interne.


Vous voulez style 103 . Vérifiez la documentation sur Convertir pour la liste des codes de style.


3 Réponses :


0
votes

Essayez d'utiliser

declare @vardate varchar(50) = '01/04/2019 01:50:31.230000000'
declare @date datetime =convert(date, left(@vardate,23), 103)
declare @time time = convert(time, substring(@vardate,12,12), 14)

select DATEADD(DAY, DATEDIFF(DAY, @time, @date), CAST(@time AS DATETIME)) AS Result


3 commentaires

date n'a pas de portion de temps; Cela ne donnera pas le résultat que l'OP veut.


Avez-vous testé cela? Pourquoi pas simplement utiliser DateTime ..?


J'ai essayé mais je n'ai pas pu trouver de format converti qui correspond à "DD / MM / AAAAYY HH: MM: SS.MMM"



2
votes

Le code que vous voulez est:

SELECT CONVERT(datetime,LEFT('01/04/2019 01:50:31.230000000',23),103);


1 commentaires

Vous pouvez également utiliser simplement DateTime2 ... Convertir (DateTime2, '01 / 04/2019 01: 50: 31.230000000 ', 103)



3
votes

convertir cette chaîne, qui est dans le 103 format , fonctionnerait s'il n'avait pas les 6 derniers zéro.
Donc un sous-chaîne code> ou gauche code> pourrait être utilisé pour ne conserver que 23 caractères.
Puis convertissez-le en une date d'heure.

Mais cette chaîne peut être convertie juste bien vers une dateTime2.
Puisqu'un DateTime2 est plus précis.
Et un DateTime2 peut être simplement moulé ou converti en une dateTime. P>

Notez que DateTime n'est pas stocké avec un format dans la table.
La façon dont il est affiché est un réglage. p>

Cependant, vous pouvez Format A DateTime Retour à une chaîne dans le format spécifique dont vous avez besoin. (commençant par SQL Server 2012) P>

Exemple d'exemple: P>

col_input_string                col_as_datetime             col_as_formatted_string
01/04/2019 01:50:31.230000000   2019-04-01 01:50:31.230     01/04/2019 01:50:31.230
31/12/2018 13:33:44.123456789   2018-12-31 13:33:44.123     31/12/2018 13:33:44.123


0 commentaires