我需要一个 SQL 条件来从昨天早上 6:00 到今天早上 7:00 之间创建的表中获取行。该表有一个 creationDate
字段。
这是我想到的方法
select *
from myTable
where creationDate = DATE_SUB(CONCAT(CURDATE()), INTERVAL 1 DAY)
我正在使用 mysql server 5。而且我的时间不在 creationDate 字段上,它在一个名为 startTime 的单独字段上。
最佳答案
经过测试并且有效(假设您的 creationDate 列是时间戳类型):
select * from mytable
where
creationDate between concat(date(date_sub(now(), interval 1 day)), ' 06:00:00') and concat(date(now()), ' 07:00:00')
注意时间值前面的空格,即“06:00:00”
编辑评论中进一步规范的原因:
SELECT * FROM mytable
WHERE
(creationDate >= date(date_sub(now(), interval 1 day)) AND creationTime >= '06:00:00')
AND
(creationDate <= date(now()) AND creationTime <= '07:00:00')
是的,现在需要这么笨拙,因为如果你只是简单地写一些像(伪代码)这样的东西
...WHERE creationDate between today and yesterday AND creationTime between '06:00:00' and '07:00:00'
您将获得今天和昨天 1 小时的时间跨度。
关于mysql - sql获取昨天的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989779/