【问题标题】:How to insert date from JSON to SQL database如何将日期从 JSON 插入 SQL 数据库
【发布时间】:2021-08-31 22:31:53
【问题描述】:

我必须将一些数据从 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。 请帮助我使用此代码将创建日期插入数据库。

提前谢谢你

【问题讨论】:

  • inputData的值是多少?
  • 请分享json输入
  • inputData 是 jsonfile.... id 和 Assignee 已正确插入到数据库中,但是当我尝试将创建的日期插入数据库时​​,它会抛出错误从字符串转换日期和/或时间时转换失败。跨度>
  • inputData json 文件为:{"expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields","id":"180","fields":{"created":"2021- 03-04T07:11:40.000+0000","assignee":{"name":"pallavi"}}
  • Edit您的问题包含 JSON 数据。它看起来不完整,至少缺少结束 } 字符。

标签: json sql-server open-json


【解决方案1】:

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, 0, ':'))
) converted;

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多