【问题标题】:How to convert datetime to timestamp in MS SQL stored function如何在 MS SQL 存储函数中将日期时间转换为时间戳
【发布时间】:2016-12-19 07:40:18
【问题描述】:

有一个从表更新触发器调用的存储函数。像这样:

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

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

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

"从数据类型 datetime2 到时间戳的显式转换不是 允许。”

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

【问题讨论】:

    标签: sql-server datetime stored-procedures


    【解决方案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());
    

    【讨论】:

    • 在我看来,您应该使用 GETUTCDATE() 来获取正确的 unix 时间戳。否则,您的 unix 时间戳将基于时区。
    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多