2016-05-29 45 views
1

我有一個表,其中有一列名爲date_time。它包含一個unix時間的數字。事情是這樣的:如何在本地正確設置UNIX_TIMESTAMP?

// mytable 
+----+------------+ 
| id | date_time | 
+----+------------+ 
| 1 | 1464499385 | -- 19 days ago 
+----+------------+ 
--     ^these are based on current time which is 1464566088 

而且,這裏是我的查詢:

SELECT id, 
     (CASE WHEN FROM_UNIXTIME(date_time) >= CURDATE() THEN 'today' 
      WHEN FROM_UNIXTIME(date_time) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 'yesteray' 
      WHEN FROM_UNIXTIME(date_time) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 'in last week' 
      ELSE 'in last month or more' 
     END) as `range` 
FROM mytable 
WHERE 1; 

上述當地查詢的結果是不一樣的on fiddle

地方:enter image description here

正如你看到的地方,結果是yesterday和小提琴是today。爲什麼有一個不同的,我該如何解決它?


注:,當我在本地和小提琴選擇UNIX_TIMESTAMP,是有不同的。

SELECT UNIX_TIMESTAMP(); -- 1464566511 (on local) 
SELECT UNIX_TIMESTAMP(); -- 1464562972 (on fiddle) 

那麼我該如何設置相同?

回答

2

Sql小提琴服務器處於不同的時區。

採取「UTC - 你的時區」和減去從你的時間戳許多間隔時間

您可以區別使用CONVERT_TZ轉換:

SELECT CONVERT_TZ(datetime,'+00:00','-10:00'); 

Convert _TZ MySql文件

您可以谷歌時間在UTC並採取差異或您可以設置全球tinezone到您的本地some support on that

+0

謝謝你的exp lanations。 +1 –