将 Unix 时间转换为 DateTime 103
Converting Unix time to DateTime 103
我有一个连接两个酒店预订数据表的存储过程,但是,我从中提取数据的 API 使用 Unix 时间。我需要将其转换为 DateTime 以匹配我的公司字段。
目前,我的转换是这样的。
IIF([start] IS NOT NULL,
CONVERT(varchar(10), [start], 103),'') as 'ArrivalDate'
这只是 returns 值 1547310796
,因此没有进行任何转换。
如何转换值以匹配 103 日期时间?
应该这样做:
SELECT DATEADD(second, 1547310796 - DATEDIFF(second, GETDATE(), GETUTCDATE()), '1970-01-01')
DATEDIFF(second, GETDATE(), GETUTCDATE())
部分将显示您与 UTC 时间落后多远。您需要从 UTC 时间戳中减去那么多秒才能获得当地时间。
适用于 Oracle/Sql
select TO_date ('19700101000000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL(<YOUR_COLUMN>+ decode (sessiontimezone, '+01:00', 3600, '+02:00', 7200, 0) , 'SECOND') as ArrivalDate
我只是想回到这个问题并添加另一个答案,如果你只想要日期而不是时间的话。
SELECT cast(DATEADD(S,[start], '1970-01-01') as date) as 'ArrivalDate'
我有一个连接两个酒店预订数据表的存储过程,但是,我从中提取数据的 API 使用 Unix 时间。我需要将其转换为 DateTime 以匹配我的公司字段。
目前,我的转换是这样的。
IIF([start] IS NOT NULL,
CONVERT(varchar(10), [start], 103),'') as 'ArrivalDate'
这只是 returns 值 1547310796
,因此没有进行任何转换。
如何转换值以匹配 103 日期时间?
应该这样做:
SELECT DATEADD(second, 1547310796 - DATEDIFF(second, GETDATE(), GETUTCDATE()), '1970-01-01')
DATEDIFF(second, GETDATE(), GETUTCDATE())
部分将显示您与 UTC 时间落后多远。您需要从 UTC 时间戳中减去那么多秒才能获得当地时间。
适用于 Oracle/Sql
select TO_date ('19700101000000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL(<YOUR_COLUMN>+ decode (sessiontimezone, '+01:00', 3600, '+02:00', 7200, 0) , 'SECOND') as ArrivalDate
我只是想回到这个问题并添加另一个答案,如果你只想要日期而不是时间的话。
SELECT cast(DATEADD(S,[start], '1970-01-01') as date) as 'ArrivalDate'