2016-08-12 57 views
1

存在從表更新觸發器調用的存儲函數。 Smt是這樣的:如何在MS SQL存儲函數中將datetime轉換爲時間戳

FUNCTION [dbo].[DateTime2ToBigInt](@dt DATETIME2(7)) 
RETURNS BIGINT 

需要將輸入日期時間轉換爲unix時間戳。

試過CONVERT(timestamp, @dt)CAST(@dt AS TIMESTAMP)但兩者結果

「從數據類型到DATETIME2時間戳顯式轉換不 不允許」。

當然有可能通過數學做的,但我不能相信,MSSQL不能直接轉換功能

回答

1
CREATE FUNCTION UNIX_TIMESTAMP (
@ctimestamp datetime 
) 
RETURNS integer 
AS 
BEGIN 
    /* Function body */ 
    declare @return integer 

    SELECT @return = DATEDIFF(SECOND,{d '1970-01-01'}, @ctimestamp) 

    return @return 
END 

嘗試的功能:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+1

對我來說,你應該使用GETUTCDATE()來獲得正確的unix時間戳。否則,你的Unix時間戳將基於時區。 – Dan

相關問題