2017-07-19 1 views
1

J'utilise un JSON provenant d'événements logicapp qui a des propriétés datetime en dessous le formatconversion datetime échoue en fonction OPENJSON

"startTime": "2017-07-12T17:14:16.0500772Z", 
"endTime": "2017-07-12T17:14:17.2939322Z", 

dans une procédure stockée avec la fonction OPENJSON Sql. Quand je l'exécute « SELECT » avec cette fonction, il échoue avec cette erreur

Msg 241, niveau 16, état 1, ligne 33 Échec de la conversion la date et/ou le temps de chaîne de caractères.

Mon observation a été que OPENJSON ne parvient pas à convertir la partie millisec après le 3ème chiffre.

Question Est-ce que quelqu'un a vu un tel problème avec la fonction OPENJSON SQL?

+0

Cela est regrettable car la chaîne est 100% conforme à la norme ISO ... Mais qu'est-ce que Microsoft savoir sur les normes? ¯ \\ _ (ツ) _/¯ – Fabien

Répondre

2

Si DateTime2, vous devriez avoir aucun problème

Exemple

select AsDT2 = try_convert(datetime2,'2017-07-12T17:14:16.0500772Z') 
     ,AsDT = try_convert(datetime, '2017-07-12T17:14:16.0500772Z') 

Retours

AsDT2       AsDT 
2017-07-12 17:14:16.0500772 NULL --<< Fails DateTime conversion 

La conversion réelle

Declare @JSON varchar(max) = '{"startTime": "2017-07-12T17:14:16.0500772Z","endTime": "2017-07-12T17:14:17.2939322Z"}' 

SELECT * FROM 
OPENJSON (@JSON) 
WITH ( 
       startTime datetime2 '$.startTime', 
       endTime datetime2 '$.endTime' 
) 

voir en action dbFiddle

+0

Merci pour la réponse rapide. – TusharJ

+0

@TusharJ Joyeux d'aider –