如何解决如何将日期从 JSON 插入 SQL 数据库
我必须将一些数据从 JSON 插入 SQL 数据库,所以我使用以下代码:
sqlQuery1 = "DECLARE @json varchar(max)='" + inputData + "';";
sqlQuery2 = "INSERT INTO [Test].[dbo].[Work] " +
"SELECT [Id],[Created],[Assignee] " +
"FROM OPENJSON(@json) "+
"WITH ([Id] int '$.id',"+
"[Created] datetimeoffset(4) '$.fields.created',"+
"[Assignee] varchar(200) '$.fields.assignee.name')";
System.out.println(sqlQuery2); stmt.addBatch(sqlQuery1);stmt.addBatch(sqlQuery2); break;
$fields.created
日期格式例如:"2021-03-04T07:11:40.000+0000"
我尝试使用不同的方式,但无法将上述格式的日期插入到 SQL 中。
请帮助我使用此代码将创建日期插入数据库。
提前致谢
解决方法
SQL Server 期望 datetimeoffset 字符串的时区部分包含冒号字符,即:+00:00
而不仅仅是 +0000
。
您需要首先将其从 JSON 中提取为 varchar/nvarchar 列,以便您可以在将其转换为 datetimeoffset 之前插入 :
字符,如下所示:
declare @json nvarchar(max) = N'{
"expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields","id": "180","fields": {
"created": "2021-03-04T07:11:40.000+0000","assignee": {
"name": "pallavi"
}
}
}';
select *
from openjson(@json) with (
[Id] int '$.id',[Created] varchar(29) '$.fields.created',[Assignee] varchar(200) '$.fields.assignee.name'
) shredded
outer apply (
select [CreatedDatetimeoffset] = convert(datetimeoffset,stuff(Created,27,':'))
) converted;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。