使用 json_value 时如何在 Sql 中格式化日期

How do I format date in TSql when I use json_value

我正在使用 SQL Server 2016 并且正在存储 json。当我提取它时,日期时间格式显示不干净。如何格式化日期时间格式?

select 
    JSON_VALUE(trade, '$.entrytime') AS entrytime 
from 
    dbo.Trades

显示的值:

2016-05-23T05:21:30.3068919-04:00
2016-05-24T10:49:16.337257-04:00
2016-05-24T11:05:30.8941267-04:00
2016-05-24T11:37:35.9555731-04:00

如何将这些日期设置为 yyyy-mm-dd hh:mm:ss 格式?

您想将以下时间戳格式化为它后面的时间戳:

2016-05-24T11:37:35.9555731-04:00
2016-05-24 11:37:35

以下查询将 T 替换为 space,并且还去掉了句点之后(包括句点)之后的所有内容。

SELECT REPLACE(SUBSTRING(JSON_VALUE(trade, '$.entrytime'), 1,
                         CHARINDEX('.', JSON_VALUE(trade, '$.entrytime')) - 1),
               'T', ' ') AS entrytime
FROM dbo.Trades

你也可以使用FORMAT:

select FORMAT(CAST(JSON_VALUE(trade, '$.entrytime') as datetimeoffset), 'yyyy-MM-dd hh:mm:ss') AS entrytime from dbo.Trades

SELECT CONVERT(VARCHAR(33), GetDate(), 126)

SELECT LEFT(CONVERT(VARCHAR(33), GetDate(), 126),19)+'Z'

值得一看