mysql - sql获取昨天的所有记录

标签 mysql sql date

我需要一个 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/

相关文章:

sql - 将 ActiveRecord 查询重写为递归 SQL

mysql - 在嵌套 sql 命令中查找值

java - 如何从oracle数据库中检索日期变量yyyy-MM-dd HH :mm:ss format and store in Date variable in the same format?

mysql - 将 MSAccess 项目管理应用程序转换为 PHP/MySQL : Which Methodology?

javascript - 如何使用 JavaScript 和 Node.js 将捕获的图像存储到 MySQL 数据库中

mysql - 如何正确索引多个左连接

php - 计算mysql结果的平均值php

sql - 如果有多个重复行又仍然返回非重复行,如何只返回1行?

mysql - 在 MySQL 中使用 varchar 而不是日期字段类型

php - 在 codeigniter 中为日期表单输入字段