我使用来自logicapp events的json,它具有以下格式的日期时间属性
"startTime": "2017-07-12T17:14:16.0500772Z", "endTime": "2017-07-12T17:14:17.2939322Z",
在具有 OPENJSON Sql 函数的存储过程中。 当我使用此函数执行“SELECT”时,它失败并出现此错误
转换时消息 241,级别 16,状态 1,第 33 行转换失败 来自字符串的日期和/或时间。
我的观察是 OPENJSON 无法转换第三位数字之后的毫秒部分。
问题 有人见过 OPENJSON SQL 函数出现这样的问题吗?
如果
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
对我来说这是比较顺序
我的json:
declare @advanceSearch nvarchar(max) = N'[{"field":"title","op":"like","val":"a"},{"field":"RegDate","op":"<=","val":"2024-07-12"}]'
以及查询地点:
where searchField = 'RegDate' and RegDate < searchValue)
但在检查第一部分之前首先比较值(第二部分)