我在这里有一点大脑冻结,无法解决这个问题。我想要一个查询,它将在昨天上午7:30之后动态地给我记录。我想每天运行相同的查询,并在昨天上午7:30之后将所有记录拉出来。另一个技巧是我运行的时区是服务器时间的8小时。我已经获得了所有组件(我认为)它只是以正确的顺序将它们组合在一起。
date_sub(addtime(now(),'8:00'), interval 1 day)
上面提到了我24小时前,但我需要在昨天07:30之后。我有什么线索可以做到这一点?提前谢谢。
约旦
答案 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';