将MSSQL Datestamp转换为UNIX的BIGINT

时间:2017-09-22 05:19:12

标签: sql-server unix timestamp bigint

我一直无法解决一些我无法理解的事情,我想知道你是否可以提供帮助?

在我的桌子上,我有一个名为

的专栏
  

ADDEDDATE

此列显示事件或故障单添加到数据库表的日期,其格式显示如下:

2015-08-25 09:58:14.967

我想将其转换为UNIX时间戳,所以首先我执行了以下操作:

SELECT DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) AS 'UNIX DATE ADDED' FROM dbo.TABLE

运行这个我得到整数值,例如" 1147855575"。现在我明白为了使这个工作在UNIX时间戳上我需要使用BIGINT进行转换,所以我写了以下内容:

SELECT DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) AS 'UNIX DATE ADDED',
CASE CAST(SUM('UNIX DATE ADDED' AS BIGINT) FROM dbo.TABLE

这返回了一个错误:

  

Msg 195,Level 15,State 10,Line 2   ' SUM'不是公认的内置函数名称。

所以我做了一些谷歌搜索和搜索Stackoverflow,发现我做错了第二行,它应该看起来像:

SELECT DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) AS 'UNIX DATE ADDED',
CASE CAST(BIGINT,'UNIX DATE ADDED') FROM dbo.TABLE

然而,这也失败了以下消息:

  

Msg 1035,Level 15,State 10,Line 2   “CAST'”附近的语法错误,预期' AS'

有人可以协助我尝试将整列整数数据转换为BIGINT for UNIX Datestamp吗?我正在使用MSSQL(SSMS 2014)。

1 个答案:

答案 0 :(得分:0)

只需:

SELECT CAST(DATEDIFF(SECOND, '1970-01-01', ADDEDDATE) AS bigint) AS 'UNIX DATE ADDED' FROM dbo.TABLE;

当您在SQL Server 2016上迁移时,您将能够使用DATEDIFF_BIG