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()?
这是一个相当长的解决方案,但它似乎有效。它考虑了时区的偏移量。
SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), '2013-07-01')
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 上使用
select datediff(ss, '1970-01-01', SYSDATETIMEOFFSET() at time zone 'UTC')
这里,
SYSDATETIMEOFFSET()返回本地系统时间以及本地时区偏移量,以便转换为 UTC。datetimeoffset如果您想要当前时间以外的其他内容,请将其替换为您自己的字段。