如何在本地正确设置UNIX_TIMESTAMP?

时间:2016-05-29 23:22:03

标签: mysql sql unix-timestamp

我有一个表格,其中有一个名为date_time的列。它包含一个unix号码。像这样:

// 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不同。

on local:enter image description here

如您所见,本地的结果为yesterday,而小提琴上的结果为today。为什么会有不同之处,我该如何解决?

注意:当我在本地和小提琴上选择UNIX_TIMESTAMP时,会有不同的。

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

那我怎么设置相同的呢?

1 个答案:

答案 0 :(得分:2)

Sql fiddle服务器位于不同的时区。

取“UTC - 您的时区”并从时间戳中减去许多间隔时间

您可以使用convert_tz转换差异:

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

Convert _TZ MySql个文件

您可以将Google时间设为UTC并获取差异,或者将全局tinezone设置为您当地的some support on that