我的MySQL表存储带有日期/时间戳的记录。我想从表中查找昨天创建的记录(如在中,创建日期为昨天-不管时间戳部分是什么)
下面是db记录的样子:

我已经尝试了以下select (和其他一些变体,但没有得到昨天日期的行。
SELECT m.meeting_id, m.member_id, m.org_id, m.title
FROM meeting m
WHERE m.create_dtm = DATE_SUB(CURDATE(), INTERVAL 1 DAY)不太确定我需要如何构造where子句来获取昨天发生的会议ids。任何帮助都将不胜感激。
发布于 2020-10-05 23:15:39
一种简单的方法是截断最新的创建时间戳,然后进行比较:
where date(m.create_dtm) = current_date - interval 1 day但是直接对时间戳使用半开间隔要高效得多:
where m.create_dtm >= current_date - interval 1 day and m.create_dtm < current_date发布于 2020-10-06 00:41:59
您可以尝试下一步查询:
SELECT
m.meeting_id, m.member_id, m.org_id, m.title, m.create_dtm
FROM meeting m
-- here we convert datetime to date for each row
-- it can be expensive for big table
WHERE date(create_dtm) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
SELECT
m.meeting_id, m.member_id, m.org_id, m.title, m.create_dtm
FROM meeting m
-- here we calculate border values once and use them
WHERE create_dtm BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND DATE_SUB(CURDATE(), INTERVAL 1 SECOND);这里是现场小提琴:SQLize.online
https://stackoverflow.com/questions/64211422
复制相似问题