【问题标题】:SQL Server 2012 get results as JSONSQL Server 2012 以 JSON 格式获取结果
【发布时间】:2016-09-07 19:04:19
【问题描述】:

我的选择返回 02:18:07

;WITH DEMO(ID, FromTime, ToTime) AS
(
    SELECT TOP 1
        ID
       ,CONVERT(DATETIME,FromTime,120) AS FromTime
       ,CONVERT(DATETIME,ToTime,120) AS ToTime
    FROM (VALUES (1,'2016-09-03 18:14:47.000','2016-09-03 20:32:54.000')
                ,(2,'2016-09-03 12:35:45.000','2016-09-03 15:06:06.000')
    ) AS X(ID,FromTime,ToTime)
)
SELECT
    DATEADD(SECOND,SUM(DATEDIFF(SECOND, k.FromTime, k.ToTime)) OVER 
        (
            PARTITION BY (SELECT NULL)
        ),CONVERT(TIME(0),'00:00:00',0)) AS TIME_SUM
FROM DEMO k;

我怎样才能得到如下结果?

"{\"returnDate\" : [ {\"TIME_SUM\":\"02:18:07\"}]} "

【问题讨论】:

  • 你用谷歌搜索过 JSON SQL Server 2016 了吗?您的查询中没有任何内容甚至告诉它以 JSON 形式返回。
  • 哪个 sql server 版本?
  • JSON 仅适用于 2016 年。
  • 我用的是2012.....
  • 那么您必须手动将其破解为 JSON 格式。 SQL Server 中的 JSON 命令仅在 2016 年可用。

标签: sql sql-server json sql-server-2012


【解决方案1】:

没有足够的细节来说明您要达到的目标;如果您真的只想要问题中显示的一个值的输出,那么这里有一个丑陋的解决方案:

;WITH DEMO(ID, FromTime, ToTime) AS
(
    SELECT TOP 1
        ID
       ,CONVERT(DATETIME,FromTime,120) AS FromTime
       ,CONVERT(DATETIME,ToTime,120) AS ToTime
    FROM (VALUES (1,'2016-09-03 18:14:47.000','2016-09-03 20:32:54.000')
                ,(2,'2016-09-03 12:35:45.000','2016-09-03 15:06:06.000')
    ) AS X(ID,FromTime,ToTime)
)
SELECT
    '{\"returnDate\" : [ {\"TIME_SUM\":\"' + 
     CONVERT(VARCHAR(20),DATEADD(SECOND,SUM(DATEDIFF(SECOND, k.FromTime, k.ToTime)) OVER 
     (
            PARTITION BY (SELECT NULL)
     ),CONVERT(TIME(0),'00:00:00',0))) + '\"}]}' AS TIME_SUM
FROM DEMO k

【讨论】:

    【解决方案2】:

    来自https://blogs.msdn.microsoft.com/jocapc/2015/05/16/json-support-in-sql-server-2016/“SQL Server 2016 中的 JSON 支持”

    SELECT column, expression, column as alias
     FROM table1, table2, table3
     FOR JSON [AUTO | PATH]
    

    在问这里之前最好先用谷歌搜索一下。

    【讨论】:

    • OP 要求 SQL Server 2012
    • @adnan_e 最初不是。操作员在我回复后编辑了帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多