2015-12-24 154 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,这两个解决方案都能正常工作。我同意,你的一个更简单,不需要创建一个函数。 –