将Unix时间转换为DateTime 103

时间:2019-02-13 12:53:59

标签: sql sql-server date datetime unix-timestamp

我有一个存储过程,将两个表的酒店预订数据连接在一起,但是,我从中提取数据的API使用的是Unix时间。我需要将其转换为DateTime以与我的公司字段匹配。

目前,我的转换看起来像这样。

IIF([start] IS NOT NULL, 
    CONVERT(varchar(10), [start], 103),'')  as 'ArrivalDate'

这仅返回值1547310796,因此未完成任何转换。

如何转换值以匹配103日期时间?

3 个答案:

答案 0 :(得分:1)

这应该做到:

SELECT DATEADD(second, 1547310796 - DATEDIFF(second, GETDATE(), GETUTCDATE()), '1970-01-01')

DATEDIFF(second, GETDATE(), GETUTCDATE())部分将为您提供距UTC时间落后的距离。您需要从UTC时间戳中减去很多秒才能获取本地时间。

答案 1 :(得分:1)

我只是想回到这一点,如果您只想要日期而不是时间,那么可以添加另一个可行的答案。

    SELECT cast(DATEADD(S,[start], '1970-01-01') as date) as 'ArrivalDate'

答案 2 :(得分:0)

适用于Oracle / Sql

select TO_date ('19700101000000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL(<YOUR_COLUMN>+ decode (sessiontimezone, '+01:00', 3600, '+02:00', 7200, 0) , 'SECOND') as ArrivalDate