Как я могу формат даты в TSQL не, когда я использую значение в JSON


Я использую SQL Server 2016 и сохраняю json. Когда я извлекаю его, формат datetime не отображается чистым. Как отформатировать формат datetime?

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?

2 2

2 ответа:

Вы также можете использовать FORMAT:

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

Вы хотите отформатировать следующую метку времени, чтобы она выглядела как следующая за ней:

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

Следующий запрос заменяет T пробелом, а также подстроками от всего, что приходит после (и включая) точку.

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