2015-12-24 151 views
5

在Microsoft SQL Server 2012或更高版本中,是否可以在單個select語句中將日期時間值轉換爲Unix時間戳?如果是這樣,該怎麼辦?將日期時間轉換爲Unix時間戳

+0

請添加你已經嘗試了什麼至今 – Ram

+0

的回答你的問題是肯定的。你真正的問題是什麼? –

+0

我編輯了這個問題,邁克爾。 –

回答

16

轉換日期時間,以UNIX時間戳是容易的,但涉及容易出錯鍵入以下內容:

@timestamp=DATEDIFF(second,{d '1970-01-01'},@datetime) 

哪裏@datetime是要轉換的日期時間值。 {d'yyyy-mm-dd'}表示法是一種ODBC轉義序列。

功能:

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 

立即嘗試像下面@Ousman:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+0

謝謝,我會看看這是否有效。 –

+0

任何不簡單的原因:select DATEDIFF(SECOND,'1970-01-01',@ctimestamp)?或選擇DATEDIFF(SECOND,CONVERT(DATETIME,'1970-01-01',121),@ctimestamp) 日期本地化? – onupdatecascade

+0

感謝Khaled和onupdatecascade,這兩個解決方案都能正常工作。我同意,你的一個更簡單,不需要創建一個函數。 –