MySQL:昨天一段时间后选择记录

时间:2014-08-26 06:06:22

标签: mysql

我在这里有一点大脑冻结,无法解决这个问题。我想要一个查询,它将在昨天上午7:30之后动态地给我记录。我想每天运行相同的查询,并在昨天上午7:30之后将所有记录拉出来。另一个技巧是我运行的时区是服务器时间的8小时。我已经获得了所有组件(我认为)它只是以正确的顺序将它们组合在一起。

date_sub(addtime(now(),'8:00'), interval 1 day)

上面提到了我24小时前,但我需要在昨天07:30之后。我有什么线索可以做到这一点?提前谢谢。

约旦

1 个答案:

答案 0 :(得分:6)

您可以使用curdate()代替now()来获取当前日期的00:00:00:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2014-08-26 06:21:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2014-08-26 |
+------------+
1 row in set (0.00 sec)

现在我们可以选择昨天:

mysql> select date_sub(curdate(), interval 1 day);
+-------------------------------------+
| date_sub(curdate(), interval 1 day) |
+-------------------------------------+
| 2014-08-25                          |
+-------------------------------------+
1 row in set (0.00 sec)

昨天7:30:

mysql> select date_add(date_sub(curdate(), interval 1 day), interval '7:30' HOUR_MINUTE);
+----------------------------------------------------------------------------+
| date_add(date_sub(curdate(), interval 1 day), interval '7:30' HOUR_MINUTE) |
+----------------------------------------------------------------------------+
| 2014-08-25 07:30:00                                                        |
+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

要更改会话的时区,您可以使用

mysql> set time_zone = '+00:00';