【发布时间】:2018-03-03 14:19:46
【问题描述】:
我遇到了一些我无法完全理解的问题,我想知道您是否可以提供帮助?
在我的桌子上,我有一个名为
的列添加日期
此列显示事件或工单添加到数据库表的日期,其格式如下例所示:
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
这返回了一个错误:
消息 195,级别 15,状态 10,第 2 行 “SUM”不是可识别的内置函数名称。
所以我在 Stackoverflow 中进行了一些谷歌搜索和搜索,发现我做错了第二行,它应该看起来像:
SELECT DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) AS 'UNIX DATE ADDED',
CASE CAST(BIGINT,'UNIX DATE ADDED') FROM dbo.TABLE
但是,这也失败了,并显示以下消息:
消息 1035,级别 15,状态 10,第 2 行 “CAST”附近的语法不正确,应为“AS”。
有人可以帮助我尝试将整列整数数据转换为 BIGINT for UNIX Datestamp 吗?我正在使用 MSSQL (SSMS 2014)。
【问题讨论】:
-
只需
datediff(second, '1970-01-01', ADDEDDATE) -
箱子,错误地放在演员面前。可能你想要的是 SELECT cast(DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) as bigint) AS 'UNIX DATE ADDED' FROM dbo.TABLE
-
Ahmed Saeed,不幸的是,您的解决方案返回的结果与原始 SELECT DATEDIFF(SECOND,{d '1970-01-01'}, ADDEDDATE) AS 'UNIX DATE ADDED' 完全相同。松鼠你能详细解释一下吗?
标签: sql-server unix timestamp bigint