2013-07-16 84 views
5

在UNIX时间戳为什么没有在MySQL和MS SQL Server上的时间戳的差异
MySQL的:MySQL和MSSQL服务器

select now() result: 2013-07-16 08:49:26.0 

SQL服务器:

select getdate() result: 2013-07-16 08:48:16.47 

,当我尝试得到unix_timestamp
MySQL:

SELECT UNIX_TIMESTAMP('2013-07-01') result: 1372629600 

SQL服务器:

SELECT DATEDIFF(SECOND,'1970-01-01', '2013-07-01') result 1372636800 

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

+0

您是否在+2h时区? –

+0

UTC + 01:00 中欧时间 – mirkobrankovic

+2

那么这可能就是它,加上DST。 –

回答

2

在SQL Server上使用

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

这里,

SYSDATETIMEOFFSET()返回本地系统时间与本地时区偏移使转换为UTC。如果您想要的东西不是当前时间,请将其替换为您自己的datetimeoffset字段。

4

这是一个相当长期的解决方案,但它似乎工作。它说明了时区的偏移量。

SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), '2013-07-01') 
+0

这很好,因为你可以使用它作为任何日期时间,而不仅仅是“现在”。 – nzn

1

对不起,对于迟到的答案,但这只适用于现在的日期。如果您必须分析过去的日期,并且您有不同的时区(夏季/冬季),这将无法正常工作。