【问题标题】:SQL Substring after and before之前和之后的 SQL 子字符串
【发布时间】:2021-01-28 16:30:43
【问题描述】:

我正在尝试查找未输入的日期,并且我的查询中有这个 json

{"year":"2020","dateFrom":"2011-01-01T00:00:00Z","dateTo":"2011-12-31T00:00:00Z"}

  1. 仅对“dateFrom”进行子字符串化:“2011-01-01T00:00:00Z”
  2. 仅对“dateTo”进行子字符串化:“2011-12-31T00:00:00Z”
  3. 验证日期输入是否正确

【问题讨论】:

  • 你的问题究竟是什么?
  • 为什么不按原样解析数据,JSON,然后使用TRY_CONVERT?至于固定数据;那是由一个人来做的,而不是 SQL。然后在插入此数据的应用程序层中实现数据验证。

标签: sql sql-server date substring


【解决方案1】:

似乎最简单的方法可能是将数据解析为 JSON,然后使用TRY_CONVERT 确保其日期有效。然后你可以手动修复坏数据:

SELECT J.Year,
       dateFrom,
       dateTo
FROM dbo.YourTable YT
     CROSS APPLY OPENJSON(YT.YourJson)
                 WITH (year int, 
                       dateFrom varchar(30),
                       dateTo varchar(30)) J
WHERE TRY_CONVERT(datetimeoffset(0),dateFrom,127) IS NULL
   OR TRY_CONVERT(datetimeoffset(0),dateTo,127) IS NULL;

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多