首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 實現 Unix Timestamp 雙向轉換函數(MySQL 相容)

     編輯:關於SqlServer

兩個標量函數:生成與格式化

1. UNIX_TIMESTAMP:DATETIME → INT (秒數)

CREATE FUNCTION UNIX_TIMESTAMP (@ctimestamp DATETIME)
RETURNS INT
AS
BEGIN
    DECLARE @return INT
    SELECT @return = DATEDIFF(SECOND, {d '1970-01-01'}, @ctimestamp)
    RETURN @return
END

2. FROM_UNIXTIME:INT → DATETIME

CREATE FUNCTION FROM_UNIXTIME (@ts INT)
RETURNS DATETIME
AS
BEGIN
    DECLARE @return DATETIME
    SELECT @return = DATEADD(SECOND, @ts, {d '1970-01-01'})
    RETURN @return
END

使用範例(語法與 MySQL 一致)

SELECT dbo.UNIX_TIMESTAMP('2013-1-1')       -- 回傳 1356969600
SELECT dbo.FROM_UNIXTIME(2145000000)        -- 回傳 2037-11-18 09:20:00.000

注意事項

  • 基準時間:UTC 1970-01-01 00:00:00
  • 返回 INT 範圍:1970 ~ 2038 年(32 位元有號整數上限)
  • 若需毫秒精度,可改用 BIGINT + DATEDIFF(MILLISECOND, ...)
  • SQL Server 2016+ 可直接用 DATEADD(SECOND, @ts, '1970-01-01') 內建邏輯,但自訂函數利於跨版本遷移與 MySQL 相容
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved