场 景
最近接到一波机器心跳数据,存回了SQL Server,竟然是时间戳(unix_timestamp)
,如表1,那这展示出来也不知道是啥时候呀?于是转呗,奇怪,SQL Server还没有自带的函数,这就尴尬了。
最后一次心跳时间 |
---|
1959214075 |
1927747569 |
1927684923 |
实 现
某个时间点A
的时间戳(unix_timestamp)
就是一个从1970-01-01 00:00:00
到时间点A
的相隔的秒数,所以算法就出来了,注意:这里的点A
和1970-01-01 00:00:00
都是UTC
时间,UTC
时间和北京时间相差8个小时,所以如果你的时间戳是北京时间生成的,就应该是你的时间点相对于1970-01-01 08:00:00
相差的秒数。
实现如下:
--时间戳转换成普通时间
SELECT DATEADD(S,1959214075,'1970-01-01 08:00:00')
--普通时间转换成时间戳
SELECT DATEDIFF(S,'1970-01-01 08:00:00', GETDATE())