MySQL 查询指定时间范围内的数据
说明
- mysql 比较时间范围可以直接用 >=、<= 等比较运算符,也可以用 between and(两边都包含,都是闭区间);比较运算符更常用,因为 between and 能做的比较运算符也能做, between and 不能做的比较运算符也能做。
- 以下 sql 只是示例,如果记录数很多,避免直接在sql中使用计算函数,影响性能,尽量先在代码中计算出时间范围,sql中用比较运算符直接匹配。
- sql中时间字段的值要加引号,eg. where start_time > ‘2020-08-24 00:00:00’,其中包含空格,要引起来作为一个整体。
当天
SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());
几天前
-- 昨天。几天前就 <= 几
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 1;
本周
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(send_time,'%Y-%m-%d'),1) = YEARWEEK(NOW(),1);
注意,很多博客写的是以下这种,结果有问题
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名, ‘%Y-%m-%d’)) = YEARWEEK(NOW());
中西方星期的算法不同,中方的周一是西方的周日,需要推迟一天,eg. 今天 2020.8.31,按照中方的星期算法,这天是周一,按照西方的算法,这天是周日。
上周
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(send_time,'%Y-%m-%d'),1) = YEARWEEK(NOW(),1)-1;
近7天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名);
近30天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(时间字段名);
本月
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
上个月
SELECT * FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(时间字段名,'%Y%m')) = 1;
本季度
SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(NOW());
上季度
SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));
近6个月
SELECT * FROM 表名 WHERE 时间字段名 BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW();
本年
SELECT * FROM 表名 WHERE YEAR(时间字段名) = YEAR(NOW());
去年
SELECT * FROM 表名 WHERE YEAR(时间字段名) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));
MySQL 查询指定时间范围内的数据相关推荐
- php按选定日期查询,php mysql查询指定范围内日期
摘要 腾兴网为您分享:php mysql查询指定范围内日期,掌上新华,掌上公交,学习帮,喜马拉雅等软件知识,以及mts,97漫画网,三菱plc编程软件win10,零点八,2016考研国家线,生化奇兵补 ...
- [已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
前言 今天又遇到很坑的问题了,因为外国友人每一周的起始日期是周日,跟我们的不一样,我们每一周的起始日期是星期一,这样导致我要用mysql统计一周的数据的时候,对于我们来说,查询的记录包括:上周日的记录 ...
- mysql查询5分钟内的数据
查询sql语句: select * from tb_log where createtime>=DATE_SUB(NOW(),INTERVAL 5 MINUTE); DATE函数扩展: 函数 描 ...
- SQL查询某时间范围内的数据
MySQL数据库查询时间段的两种方法: 1.SELECT id FROM m_question WHERE cratedate BETWEEN TO_DAYS('2018-05-31 12:00:00 ...
- MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
1.使用函数DATE_SUB DATE_SUB函数在当前时间减去一定的时间 DATE_SUB(date,INTERVAL expr unit) date:合法日期,可以是当前时间now() expr: ...
- SQL——查询某时间范围内的数据
1.BETWEEN SELECT id FROM m_question WHERE cratedate BETWEEN TO_DAYS('2019-05-31 00:00:00') and TO_DA ...
- MYSQL 查询指定范围内的经纬度
select * from `location` where ( acos( sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + ...
- mysql查询特定时间数据视频_mysql查询特定时间段内的数据
参照文章(mysql查询时间段内数据)进行了操作. 先来建表语句: [sql] view plaincopySETFOREIGN_KEY_CHECKS=0;-- ------------------- ...
- mysql 近几天内_MYSQL查询一周内的数据(最近7天的)
select * from wap_content where week(created_at) = week(now) 如果你要严格要求是某一年的,那可以这样 查询一天: select * from ...
最新文章
- 当人工智能遇到神经科学,二者联手势不可挡!
- 机器学习|最简单易懂的机器学习
- javacore分析工具_「赵强老师」如何分析Java的内存溢出问题
- Codeforces 1188
- linux系统被***后处理经历
- ECCV 2020 《Improving One-stage Visual Grounding by Recursive Sub-query Construction》论文笔记
- cisco 2600的密码破解
- nfs文件服务器以及客户端基本配置
- 【转载】现代浏览器的工作原理
- 单招计算机专业考多少分可以录取,单招考多少分能过?单招分数线
- java21个知识点重点_java21个知识点重点
- JavaWeb笔记05-解决线程安全问题
- cad在线转低版本_为什么别人CAD绘图总是比你快?因为他早就偷偷掌握了这几个技巧...
- 操作系统服务:time时间模块+datetime模块
- 文字表情 emoji 解析大全
- 搞懂差分密码分析,看这篇文章就够了!!
- 22-05-21 西安 javaweb(07) HttpServletRequest和HttpServletResponse、转发与重定向、web应用的路径问题、解决中文乱码问题
- Autovue v21.0.2新功能简介
- 基于聚集诱导荧光探针细胞膜/细胞膜表面GABA受体荧光探针/上汞离子荧光探针的研究
- linux 隐藏命令参数,linux – 在ps中隐藏命令的参数