我有一张这样的桌子:
Image
我需要将此表中的日期时间值转换为| Id | Data | TimeStamp
-- Example info. Check Data EOL to see Time
| Id | 732DC7DE-2B9D-4B91-8753-0004128B26D2
| Data | {"message":"Machine is down","machineId":"165ACE37-4E2C-4D44-9D14-D4D3ABK66C","machineName":"1501","ipAddress":"192.168.0.1","time":"2018-05-20T18:33:23.171"}
| TimeStamp | 2018-05-20 18:33:23.1710000
时间。
我知道了时间戳转换。
UTC
我的本地地址为Update ProcessEventMessage SET TimeStamp = DateADD(hour, -2, TimeStamp)
我必须从json-data中删除2h。
但是我不知道如何将UTC+2h
对象转换为json-datetime
。
我已经尝试过类似的方法,但是没有成功。如何将这些数字转换为UTC
? (即删除两个小时)。
UTC
Read more about ISO_8601 Here结构:YYYY-MM-DDTHH:MM:SS.MSS
TL; DR:从json字符串中删除2h
思路:做到这一点的一种方法是寻找时间 T ,并替换掉其后的小时数以减去2小时。 (可能吗?)
编辑:
我现在对sql表进行了结构化查询,如下所示:
"time":"2018-05-20T18:33:23.171"
我可以以某种方式使用这些变量来修改值吗?
答案 0 :(得分:0)
尝试这样的事情:
DECLARE @UTCDateTime DATETIME = GETUTCDATE();
SET @UTCDateTime = TimeStamp AT TIME ZONE 'your time zone' AT TIME ZONE 'UTC'
SET @UTCDateTime = TimeStamp AT TIME ZONE 'Central Europe Standard Time' AT TIME ZONE 'UTC'
select @UTCDateTime
(AT TIME ZONE
)仅适用于SQL Server 2016 +
答案 1 :(得分:0)
DECLARE @JSON NVARCHAR(MAX)
SET @JSON =
'{
"TMP": [
{"message":"Machine is down","machineId":"165ACE37-4E2C-4D44-9D14-F9E2CB2C2C13","machineName":"1501","ipAddress":"192.168.150.101","time":"2018-05-20T18:33:23.171"}]}
'
SET @JSON = JSON_MODIFY(@JSON, '$.TMP[0]', 'something')