MySQL如何在unix时间戳中获得时差

时间:2017-10-02 13:00:42

标签: mysql

我有变量,其值为1506947452,需要使用公式从该日期提取分钟:started_data - now_date但是start_date是unix时间戳格式的10位数int ...我以ajax形式收到并需要输入mysql查询我试试这个:

SELECT TIMESTAMPDIFF(MINUTE, 1506947452, UNIX_TIMESTAMP());

但是我从终端得到了这个:

+-------------------------------------------------------+
| TIMESTAMPDIFF(MINUTE, '1506947452', UNIX_TIMESTAMP()) |
+-------------------------------------------------------+
|                                                  NULL |
+-------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

那么我如何比较unix_timestamp格式的两个日期并获得分钟? 我需要将unix_timestamp用于start_date,以便其他日期格式不是解决方案。

2 个答案:

答案 0 :(得分:3)

UNIX_TIMESTAMP是' 1970-01-01 00:00:00'在UTC中。如果你有一个变量持有另一个UNIX_TIMESTAMP,你可以得到差异并将秒转为几分钟(并在需要时舍入/截断结果):

 SELECT ROUND((UNIX_TIMESTAMP()-1506947452) / 60, 0)

答案 1 :(得分:0)

我使用以下方法修复它:

SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW());

这个想法是将unixtime转换为正常日期,然后将它与now()datetimestamp进行比较......所以我明白了:

mysql> SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW());
+-----------------------------------------------------------+
| TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW()) |
+-----------------------------------------------------------+
|                                                         2 |
+-----------------------------------------------------------+
1 row in set (0.01 sec)