说明

  • 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 查询指定时间范围内的数据相关推荐

  1. php按选定日期查询,php mysql查询指定范围内日期

    摘要 腾兴网为您分享:php mysql查询指定范围内日期,掌上新华,掌上公交,学习帮,喜马拉雅等软件知识,以及mts,97漫画网,三菱plc编程软件win10,零点八,2016考研国家线,生化奇兵补 ...

  2. [已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题

    前言 今天又遇到很坑的问题了,因为外国友人每一周的起始日期是周日,跟我们的不一样,我们每一周的起始日期是星期一,这样导致我要用mysql统计一周的数据的时候,对于我们来说,查询的记录包括:上周日的记录 ...

  3. mysql查询5分钟内的数据

    查询sql语句: select * from tb_log where createtime>=DATE_SUB(NOW(),INTERVAL 5 MINUTE); DATE函数扩展: 函数 描 ...

  4. SQL查询某时间范围内的数据

    MySQL数据库查询时间段的两种方法: 1.SELECT id FROM m_question WHERE cratedate BETWEEN TO_DAYS('2018-05-31 12:00:00 ...

  5. MySql查询某个时间段内的数据(前一周、前三个月、前一年等)

    1.使用函数DATE_SUB DATE_SUB函数在当前时间减去一定的时间 DATE_SUB(date,INTERVAL expr unit) date:合法日期,可以是当前时间now() expr: ...

  6. SQL——查询某时间范围内的数据

    1.BETWEEN SELECT id FROM m_question WHERE cratedate BETWEEN TO_DAYS('2019-05-31 00:00:00') and TO_DA ...

  7. MYSQL 查询指定范围内的经纬度

    select * from `location` where ( acos( sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + ...

  8. mysql查询特定时间数据视频_mysql查询特定时间段内的数据

    参照文章(mysql查询时间段内数据)进行了操作. 先来建表语句: [sql] view plaincopySETFOREIGN_KEY_CHECKS=0;-- ------------------- ...

  9. mysql 近几天内_MYSQL查询一周内的数据(最近7天的)

    select * from wap_content where week(created_at) = week(now) 如果你要严格要求是某一年的,那可以这样 查询一天: select * from ...

最新文章

  1. 当人工智能遇到神经科学,二者联手势不可挡!
  2. 机器学习|最简单易懂的机器学习
  3. javacore分析工具_「赵强老师」如何分析Java的内存溢出问题
  4. Codeforces 1188
  5. linux系统被***后处理经历
  6. ECCV 2020 《Improving One-stage Visual Grounding by Recursive Sub-query Construction》论文笔记
  7. cisco 2600的密码破解
  8. nfs文件服务器以及客户端基本配置
  9. 【转载】现代浏览器的工作原理
  10. 单招计算机专业考多少分可以录取,单招考多少分能过?单招分数线
  11. java21个知识点重点_java21个知识点重点
  12. JavaWeb笔记05-解决线程安全问题
  13. cad在线转低版本_为什么别人CAD绘图总是比你快?因为他早就偷偷掌握了这几个技巧...
  14. 操作系统服务:time时间模块+datetime模块
  15. 文字表情 emoji 解析大全
  16. 搞懂差分密码分析,看这篇文章就够了!!
  17. 22-05-21 西安 javaweb(07) HttpServletRequest和HttpServletResponse、转发与重定向、web应用的路径问题、解决中文乱码问题
  18. Autovue v21.0.2新功能简介
  19. 基于聚集诱导荧光探针细胞膜/细胞膜表面GABA受体荧光探针/上汞离子荧光探针的研究
  20. linux 隐藏命令参数,linux – 在ps中隐藏命令的参数

热门文章

  1. 激光slam 第六次作业
  2. 注册公司的手续及程序
  3. css浮动布局自适应,CSS | 自适应两栏布局方法
  4. 7-4 后天 (5分)
  5. “破局”数据难题,联想企业网盘让协同办公更高效...
  6. 4款支持私有部署的国产办公软件,安全又好用
  7. 网易有道IP,身份证号, 手机号归属地API查询接口
  8. ehcache 冲突_解决Ehcache缓存警告问题
  9. 一起学:仓库管理的相关指标
  10. 解决升级Mountain Lion以后,ubd进程占用CPU问题。