--有的时候需要用到UNIX时间,该时间是指从'1970-01-01 00:00:00‘到当前的时间的秒数,在UNIX里这个叫时间戳,为了不和MSSQL的时间戳冲突(MSSQL的时间戳实际上是一个计数器)。这里就叫UNIX时间。另外下面的表达式也给出了精确到毫秒级单位的unix时间转换表达式
DECLARE @unixtime bigint
DECLARE @adate datetime
--下面的表达式的功能是将datetime类型的当前时间转换成从'1970-01-01 00:00:00‘到当前的时间的秒数
SET @unixtime = CONVERT(bigint,DATEDIFF(mi,'1970-01-01 00:00:00', GETDATE())) * 60 + DATEPART(ss,GETDATE())
--下面的表达式的功能是将从'1970-01-01 00:00:00‘到当前的时间的秒数转换成datetime类型
SET @adate = DATEADD (ss ,@unixtime % 60 ,DATEADD(mi,@unixtime / 60,'1970-01-01 00:00:00'))
SELECT @unxitime,@adate
--下面的表达式的功能是将datetime类型的当前时间转换成从'1970-01-01 00:00:00‘到当前的时间的毫秒数
SET @unixtime = CONVERT(bigint,DATEDIFF(mi,'1970-01-01 00:00:00.000', GETDATE())) * 60000 + DATEPART(s,GETDATE()) * 1000 + DATEPART(ms, GETDATE())
--下面的表达式的功能是将从'1970-01-01 00:00:00‘到当前的时间的毫秒数转换成datetime类型
SET @adate = DATEADD (ms ,@unixtime % 60000 ,DATEADD(mi,@unixtime / 60000,'1970-01-01 00:00:00.000'))
SELECT @unxitime,@adate