2013-07-16 86 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

對不起,對於遲到的答案,但這隻適用於現在的日期。如果您必須分析過去的日期,並且您有不同的時區(夏季/冬季),這將無法正常工作。