MySQL和MSSQL Server上的UNIX时间戳

mir*_*vic 6 mysql t-sql timezone timestamp

为什么mysql和MS SQL Server
MySQL中的时间戳有所不同:

select now() result: 2013-07-16 08:49:26.0
Run Code Online (Sandbox Code Playgroud)

SQL Server:

select getdate() result: 2013-07-16 08:48:16.47
Run Code Online (Sandbox Code Playgroud)

当我试图获得unix_timestamp
MySQL时:

SELECT UNIX_TIMESTAMP('2013-07-01') result: 1372629600
Run Code Online (Sandbox Code Playgroud)

SQL Server:

SELECT DATEDIFF(SECOND,'1970-01-01', '2013-07-01') result 1372636800
Run Code Online (Sandbox Code Playgroud)

问题:有7200秒(2H)的差异
在两台服务器上这是一个时区的问题,服务器时间为上看到相同的now()getdate()

Tom*_*Tom 5

这是一个相当长的解决方案,但它似乎有效。它考虑了时区的偏移量。

SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), '2013-07-01')
Run Code Online (Sandbox Code Playgroud)


Dza*_*ton 3

在 SQL Server 上使用

select datediff(ss, '1970-01-01', SYSDATETIMEOFFSET() at time zone 'UTC')

这里,

SYSDATETIMEOFFSET()返回本地系统时间以及本地时区偏移量,以便转换为 UTC。datetimeoffset如果您想要当前时间以外的其他内容,请将其替换为您自己的字段。