sql-server - 如何将带时区的 JSON 日期转换为 SQL Server 日期时间?

标签 sql-server json datetime

我将 JSON 对象的输出保存在 CSV 文件中。我想将数据导入 SQL Server。我尝试将 JSON 日期列转换为 SQL Server 日期时间数据类型。

select cast('2009-06-18T16:44:20+0000' as datetime)

这会引发错误:从字符串转换日期和/或时间时转换失败。

如何将带时区的 JSON 日期转换为 SQL Server 日期时间?

最佳答案

我也有类似的问题;尽管我的日期的日期格式有点不同,但我遇到了同样的错误。我的解决方案是将其转换为 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'
);

关于sql-server - 如何将带时区的 JSON 日期转换为 SQL Server 日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982977/

相关文章:

java - 在闪屏期间动态选择 Activity

javascript - 在 JSON stringify 数组中查找一个值

c# - 所有日期时间都存储在 utc 中

c# - Microsoft SQL Server 如何将数据从一个表复制到另一个表

sql - SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

c# - Money vs. Decimal vs. Float 性能问题(货币值的 SQL 数据类型)?

C++ 日期时间类

sql - 如何根据字符串从sql server中删除重复项

arrays - 如何从JSON传递List <dynamic>到List <MyModel>?

postgresql - 跨时区查询