如何在MS SQL存储函数中将datetime转换为时间戳

时间:2016-08-12 10:14:20

标签: sql-server datetime stored-procedures

存在从表更新触发器调用的存储函数。像这样:“

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

需要将输入日期时间转换为unix时间戳。

尝试CONVERT( timestamp, @dt)CAST(@dt AS TIMESTAMP),但两者都会导致

  

“从数据类型datetime2到timestamp的显式转换不是   允许“。

当然可以通过数学做,但我不敢相信,mssql没有直接转换功能

1 个答案:

答案 0 :(得分:4)

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());