Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
前后的SQL子字符串_Sql_Sql Server_Date_Substring - Fatal编程技术网

前后的SQL子字符串

前后的SQL子字符串,sql,sql-server,date,substring,Sql,Sql Server,Date,Substring,我正在尝试查找未键入的日期,我的查询中有这个json {“年份”:“2020年”,“日期自”:“2011-01-01T00:00:00Z”,“日期至”:“2011-12-31T00:00:00Z”} 仅子字符串“dateFrom”:“2011-01-01T00:00:00Z 仅子字符串“dateTo”:“2011-12-31T00:00:00Z 验证键入的日期是否正确 似乎最简单的方法可能是将数据解析为JSON,然后使用TRY\u CONVERT确保它是有效的日期。然后您可以手动修复坏数据: 选

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

{“年份”:“2020年”,“日期自”:“2011-01-01T00:00:00Z”,“日期至”:“2011-12-31T00:00:00Z”}

  • 仅子字符串“dateFrom”:“2011-01-01T00:00:00Z
  • 仅子字符串“dateTo”:“2011-12-31T00:00:00Z
  • 验证键入的日期是否正确

  • 似乎最简单的方法可能是将数据解析为JSON,然后使用
    TRY\u CONVERT
    确保它是有效的日期。然后您可以手动修复坏数据:

    选择J.年份,
    日期:,
    达特托
    从dbo.YourTable YT
    交叉应用OPENJSON(YT.YourJson)
    带(整年),
    从varchar(30)开始的日期,
    dateTo varchar(30))J
    其中TRY_CONVERT(datetimeoffset(0),dateFrom,127)为空
    或者尝试转换(datetimeoffset(0),dateTo,127)为空;
    
    似乎最简单的方法可能是将数据解析为JSON,然后使用
    TRY\u CONVERT
    确保它是有效的日期。然后您可以手动修复坏数据:

    选择J.年份,
    日期:,
    达特托
    从dbo.YourTable YT
    交叉应用OPENJSON(YT.YourJson)
    带(整年),
    从varchar(30)开始的日期,
    dateTo varchar(30))J
    其中TRY_CONVERT(datetimeoffset(0),dateFrom,127)为空
    或者尝试转换(datetimeoffset(0),dateTo,127)为空;
    
    您的问题是什么?为什么不将数据按原样解析为JSON,然后使用
    TRY_CONVERT
    ?至于数据的固定;这是一个人的事,不是SQL。然后在插入此数据的应用程序层中执行数据验证。您的问题是什么?为什么不将数据按原样解析为JSON,然后使用
    TRY\u CONVERT
    ?至于数据的固定;这是一个人的事,不是SQL。然后在插入此数据的应用程序层中实现数据验证。