如何计算MySQL的时差?

时间:2014-12-09 01:09:36

标签: php mysql

我有一个包含列' start'的表格,其中包含某些任务的开始日期

+----------+---------------------+------------+
| name     | start               | end        |
+----------+---------------------+------------+
| p1       | 2014-12-08 15:56:03 |            | 
| p2       | 2014-12-08 15:56:03 |            | 
| p3       | 2014-12-08 15:56:03 |            | 
| ...      | ...                 | ...        | 
+----------+---------------------+------------+

我需要从这个表中选择所有启动超过48小时的任务 我试过了

start between DATE_SUB(NOW(),INTERVAL 2 DAY) and  NOW()

我用谷歌搜索并尝试了几种比较日期的方法,但遗憾的是没有按预期得到结果。

3 个答案:

答案 0 :(得分:1)

这是您想要实现的结果的正确MySQL语句。只需用MySQL表的名称替换单词table

SELECT *
FROM table
WHERE start BETWEEN DATE_SUB(NOW(), INTERVAL 2 DAY) AND NOW()

编辑:我刚刚注意到,您实际上正在寻找超过2天的每个日期,而不是2天内的#34;"。所以MySQL的声明就是:

SELECT *
FROM table
WHERE start < DATE_SUB(NOW(), INTERVAL 2 DAY)

答案 1 :(得分:0)

我不熟悉纯粹使用mysql的方法,但你可以用PHP做日期(因为你也用PHP标记这个日期):

$startDate = date("Y-m-d H:i:s",strtotime("-48 hours"));
$nowDate = date("Y-m-d H:i:s");
$sql = "select * from table where start >= '".$startDate."' AND start <= '".$nowDate."'";
// execute your sql statement here and fetch results

答案 2 :(得分:0)

这似乎与你想要做的最接近。

SELECT * 
FROM table 
WHERE start BETWEEN (CURRENT_DATE() - INTERVAL 2 DAY) AND CURRENT_DATE();