Sql 将Datetime转换为Unix时间戳

Sql 将Datetime转换为Unix时间戳,sql,sql-server,datetime,sql-server-2012,unix-timestamp,Sql,Sql Server,Datetime,Sql Server 2012,Unix Timestamp,在Microsoft SQL Server 2012或更高版本中,是否可以在单个select语句中将日期时间值转换为Unix时间戳?如果是这样的话,怎么做呢?正如Peter Halasz在: 将datetime转换为unix时间戳很容易,但会产生错误 请键入以下内容: @timestamp=DATEDIFF(second,{d '1970-01-01'},@datetime) 其中@datetime是要转换的日期时间值。{d} “yyyy-mm-dd”}符号是ODBC转义序列 职能: CREA

在Microsoft SQL Server 2012或更高版本中,是否可以在单个select语句中将日期时间值转换为Unix时间戳?如果是这样的话,怎么做呢?

正如Peter Halasz在:

将datetime转换为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
现在尝试一下,如下@O A:


请添加您尝试过的内容,以便您的问题的答案为“是”。你真正的问题是什么?我已经编辑了这个问题,迈克尔。有没有理由不简化为:选择DATEDIFF(第二个,'1970-01-01',@ctimestamp)?或者选择DATEDIFF(秒,转换(DATETIME,'1970-01-01',121),@ctimestamp)日期本地化?感谢Khaled和onupdatecascade,这两种解决方案都有效。我同意,你的方法更简单,不需要创建函数。@onupdatecascade当Ousman试图定期使用某个东西时,你不认为每次编写整个东西都比将其用作函数更糟糕吗?在许多地方,可重用性是一个很好的实践,但标量UDF(特别是那种类型的UDF)除外SQL Server中存在一些严重的性能问题,有时实际上最好包含这样的内联表达式。。。那么它就不能被优化器自动内联,这应该是性能方面的一个危险信号
SELECT UNIX_TIMESTAMP(GETDATE());