首页 > 解决方案 > 在 ms-sql 中设置 Epoch 时间戳

问题描述

我正在尝试将 MS-SQL 12 中特定字段的值设置为当时的纪元时间戳。现在,我使用了一个复杂的查询:

UPDATE SOME_TABLE
    SET SOME_EPOCH_TIMESTAMP = CAST(DATEDIFF(second, '19700101', CURRENT_TIMESTAMP) AS BIGINT) * 1000
    WHERE SOME_CONDITION > 0;

通过 MS-SQL 内置函数执行此操作的更好方法是什么?

标签: sqlsql-serversql-server-2012epoch

解决方案


我认为DATEDIFF(s, '1970-01-01', GETUTCDATE())是最好的方法。

如果你想让代码更清晰,你可以写一个函数。

CREATE FUNCTION [dbo].Epoch_TIMESTAMP ()
RETURNS BIGINT 
AS BEGIN
    RETURN DATEDIFF(s, '1970-01-01', GETUTCDATE())
END

使用将是

SELECT [dbo].Epoch_TIMESTAMP()

sqlfiddle


推荐阅读