MySQL中查询当前时间间隔前1天的数据
1.背景
实际项目中我们都会遇到分布式定时任务执行的情况,有时定时任务执行的时候如果查询的数据量比较大时,我们会选择执行时间间隔几天前的数据筛选后进行执行。
避免执行全量的数据导致内存占用过大或执行时间过长导致OOM等问题。
这里我们就会用到SQL来过滤当前时间间隔1天或几天的查询。
1.1.查询SQL语句
这里用到一张talk_course表作为查询sql语句的执行表单,表的字段如下:

表中大致有如下几条测试数据:

查询距离当前执行时间前一天的SQL语句如下:
# 查询距离当前时间前1天的数据 SELECT * FROM `talk_course` t WHERE t.createTime <= NOW() AND t.createTime >= date_sub(now(), interval 1 day);
查询结果:

查询当前时间的前一天的时间:
# 查询当前时间的前一天的时间 SELECT date_sub(now(),interval 1 day) as yesterday
1.2.查询语句分析
这里用到了两个函数:
DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit)
DATE_ADD() 函数向日期添加指定的时间间隔。
DATE_SUB() 函数向日期减少指定的时间间隔。
其中expr参数是您希望添加的时间间隔。
type 参数可以是下列值:
| Type 值 |
|---|
| MICROSECOND |
| SECOND |
| MINUTE |
| HOUR |
| DAY |
| WEEK |
| MONTH |
| QUARTER |
| YEAR |
| SECOND_MICROSECOND |
| MINUTE_MICROSECOND |
| MINUTE_SECOND |
| HOUR_MICROSECOND |
| HOUR_SECOND |
| HOUR_MINUTE |
| DAY_MICROSECOND |
| DAY_SECOND |
| DAY_MINUTE |
| DAY_HOUR |
| YEAR_MONTH |
到此这篇关于MySQL中查询当前时间间隔前1天的数据的文章就介绍到这了,更多相关mysql查询当前时间前1天内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据
mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据的100%恢复,目的是尽可能多的恢复,下面是具体的操作方法2025-03-03
Navicat for MySQL定时备份数据库及数据恢复详解
这篇文章主要介绍了Navicat for MySQL定时备份数据库及数据恢复的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10


最新评论