2016-05-29 7 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 fiddle serverは異なるタイムゾーンにあります。

テイク 'UTC - あなたのタイムゾーン' とあなたはconvert_tzを使用して違いを変換することができ、あなたのタイムスタンプ

から多くの間隔時間という減算:

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

Convert _TZ MySql文書

あなたがGoogleの時間することができますUTCで差をつけるか、ローカルtinezoneをローカルに設定することができますsome support on that

+0

lanations。 +1 –

関連する問題