我有一个包含列' 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()
我用谷歌搜索并尝试了几种比较日期的方法,但遗憾的是没有按预期得到结果。
答案 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();