Tar*_*zan 3 sql-server datetime json
我将 JSON 对象的输出保存在 CSV 文件中。我想将数据导入 SQL Server。我试图将 JSON 日期列转换为 SQL Server 日期时间数据类型。
select cast('2009-06-18T16:44:20+0000' as datetime)
Run Code Online (Sandbox Code Playgroud)
这会导致引发错误:从字符串转换日期和/或时间时转换失败。
如何将带时区的 JSON 日期转换为 SQL Server 日期时间?
据我所知,SQL Server 使用冒号识别时区。您必须按如下方式重新格式化时区部分:
SELECT CONVERT(datetime2, STUFF('2009-06-18T16:44:20+0000', 23, 0, ':'))
Run Code Online (Sandbox Code Playgroud)
根据MSDN ISO 8601 有YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]格式。
小智 5
我有一个类似的问题;尽管我的日期的日期格式略有不同,但我遇到了同样的错误。我的解决方案是将其转换为 DATETIME2 值,而不仅仅是 DATETIME。如果我没有看到 Pawel 的回答,我就不会尝试转换为 DATETIME2。
我得到的日期来自使用 JSON.Net 序列化为 JSON 的 C# 对象。下面是一个示例 SQL 脚本,显示了日期时间值是什么以及如何转换它。
DECLARE @effectiveDateJSON VARCHAR(MAX) =
'{"EffectiveDate":"2017-02-07T00:00:00-06:00", "CreateDate":"2017-02-07T16:32:12.9130892-06:00"}';
SELECT *
FROM OPENJSON(@effectiveDateJSON)
WITH (EffectiveDate DATETIME2 '$.EffectiveDate',
CreateDate DATETIME2 '$.CreateDate'
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9324 次 |
| 最近记录: |