You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中JSON列提取transactionTimeStamp与时间戳列比较报错问题

解决SQL Server中JSON字段筛选的问题

SQL Server不支持JSON_EXTRACT函数,这个函数是MySQL等其他数据库的语法,在SQL Server里提取JSON字段值要改用JSON_VALUE函数。

基础筛选写法

假设你的表名为YourTable,Config_MSG的JSON结构类似{"message": {"transactionTimeStamp": "2024-05-20 14:30:00"}},可以用以下SQL语句筛选符合条件的记录:

SELECT Id, Config_MSG, CreatedDate_TimeStamp
FROM YourTable
WHERE CONVERT(DATETIME, JSON_VALUE(Config_MSG, '$.message.transactionTimeStamp')) > CreatedDate_TimeStamp;

注意事项

  • 如果transactionTimeStamp的格式不是SQL Server默认的datetime格式,建议用TRY_CONVERT或带格式参数的CONVERT确保转换成功,避免报错:
    -- 处理ISO8601格式的时间字符串
    WHERE TRY_CONVERT(DATETIME2, JSON_VALUE(Config_MSG, '$.message.transactionTimeStamp'), 127) > CreatedDate_TimeStamp;
    
  • 若JSON结构嵌套复杂,可使用OPENJSON解析后关联筛选:
    SELECT t.Id, t.Config_MSG, t.CreatedDate_TimeStamp
    FROM YourTable t
    CROSS APPLY OPENJSON(t.Config_MSG, '$.message')
    WITH (transactionTimeStamp DATETIME2 '$.transactionTimeStamp') AS j
    WHERE j.transactionTimeStamp > t.CreatedDate_TimeStamp;
    

内容的提问来源于stack exchange,提问作者Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:17:03