首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -当时间戳是日期的一部分时,如何查找昨天的记录

问MySQL -当时间戳是日期的一部分时,如何查找昨天的记录
EN

Stack Overflow用户
提问于 2020-10-05 23:14:42
回答 2查看 62关注 0票数 0

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

下面是db记录的样子:

​

​

我已经尝试了以下select (和其他一些变体,但没有得到昨天日期的行。

代码语言:javascript
复制
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。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-05 23:15:39

一种简单的方法是截断最新的创建时间戳,然后进行比较:

代码语言:javascript
复制
where date(m.create_dtm) = current_date - interval 1 day

但是直接对时间戳使用半开间隔要高效得多:

代码语言:javascript
复制
where m.create_dtm >= current_date - interval 1 day and m.create_dtm < current_date
票数 3
EN

Stack Overflow用户

发布于 2020-10-06 00:41:59

您可以尝试下一步查询:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64211422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档