2017-07-19 82 views
1

失敗我使用從logicapp事件來一個JSON具有日期時間特性在下面格式日期時間轉換中OPENJSON功能

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

OPENJSON SQL函數一個存儲過程。 當我執行「選擇」與此功能它失敗,此錯誤

消息241,級別16,狀態1,把從字符串 日期和/或時間時,線33轉換失敗。

我的觀察結果是,OPENJSON未能在第三位數後轉換millisec部分。

問題 有沒有人看到過OPENJSON SQL函數有這樣的問題?

+0

這是不幸的,因爲該字符串是100%,符合ISO標準......但什麼是微軟知道標準是什麼? ¯\\ _(ツ)_ /¯ – Fabien

回答

2

如果DateTime2,你應該沒有問題

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

返回

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

實際轉換

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' 
) 

看到它在行動dbFiddle

+0

感謝您的快速回復。 – TusharJ

+0

@TusharJ樂於助人 –