我一直无法解决一些我无法理解的事情,我想知道你是否可以提供帮助?
在我的桌子上,我有一个名为
的专栏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)。
答案 0 :(得分:0)
只需:
SELECT CAST(DATEDIFF(SECOND, '1970-01-01', ADDEDDATE) AS bigint) AS 'UNIX DATE ADDED' FROM dbo.TABLE;
当您在SQL Server 2016上迁移时,您将能够使用DATEDIFF_BIG