MySql中有内置函数from_unixtime和unix_timestamp来将时间和unix时间戳进行互转,而SQLServer没有类似的函数,为了方便我们可以自己添加,需要用到SQLServer的标量值函数(表值函数返回的是表,而标量值函数可以返回基类型)。
1.将DateTime转换成时间戳
CREATE FUNCTION [dbo].[Fn_Unix_Timestamp] (@time datetime)
RETURNS int AS
BEGIN
return DATEDIFF(s, '19700101', @time)
END
2.将时间戳转换成DateTime
CREATE FUNCTION [dbo].[Fn_From_UnixTime] (@timestamp int)
RETURNS DateTime AS
BEGIN
return DATEADD(s, @timestamp, '19700101')
END
使用方式:
DECLARE @ts INT
SELECT @ts=dbo.Fn_Unix_Timestamp(GETDATE())
SELECT @ts --1557244733
SELECT dbo.Fn_From_UnixTime(@ts) --2019-05-07 15:58:53.000
添加好标量值函数后,在SQL Management中如下位置可以看到: