数据类型

mysql 常用的时间格式的数据类型有几种:datedatetimetimetimestamp

内置日期函数

日期时间查询函数

1、查询当前日期:CURDATE()

// 2022-06-27
SELECT CURDATE();
SELECT CURRENT_DATE();

2、查询当前时间:CURTIME()

// 10:18:50
SELECT CURTIME();
SELECT CURRENT_TIME();

3、查询当前日期和时间

3.1、CURRENT_TIMESTAMP()

// 2022-06-27 10:21:58
SELECT CURRENT_TIMESTAMP();

3.2、NOW()

// 2022-06-27 10:21:58
SELECT NOW();

3.3、SYSDATE()

// 2022-06-27 10:21:58
SELECT SYSDATE();

日期时间格式转换函数

1、从日期或日期时间表达式中提取部分

按指定的提取类型提取:EXTRACT(unit FROM date)

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

SELECT EXTRACT(HOUR FROM '2022-06-27 10:21:58');   // 10

1.1、提取日期:DATE()

// 2022-06-27
SELECT DATE('2022-06-27 10:21:58');
SELECT DATE('2022-06-27');

1.2、提取天数:DAY()

SELECT DAY('2022-06-27');  // 27
SELECT DAY('2022-06-27 10:21:58');    // 27

1.3、提取星期几:DAYNAME()

SELECT DAYNAME('2022-06-27');  // Monday
SELECT DAYNAME('2022-06-27 10:21:58');    // Monday

1.4、本月第几天:DAYOFMONTH()

SELECT DAYOFMONTH('2022-06-27');   // 27
SELECT DAYOFMONTH('2022-06-27 10:21:58'); // 27

1.5、本周第几天(1星期日,2星期一):DAYOFWEEK()

SELECT DAYOFWEEK('2022-06-27');    // 2
SELECT DAYOFWEEK('2022-06-27 10:21:58');  // 2

1.6、本年第几天:DAYOFYEAR()

SELECT DAYOFYEAR('2022-06-27');    // 178
SELECT DAYOFYEAR('2022-06-27 10:21:58');  // 178

2、按给定格式输出日期:DATE_FORMAT(date,format)

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');  // 2022-06-27

3、计算给定日期距离 0000年1月1日 的天数:TO_DAYS(date)

SELECT TO_DAYS('0000-01-02');  // 2
SELECT TO_DAYS(NOW());  // 738698

日期时间计算函数

1、当天加上 n 天:ADDDATE(date,INTERVAL expr unit)、ADDDATE(expr,days)

SELECT CURDATE();    // 今天 2022-06-27
SELECT ADDDATE(CURDATE(),INTERVAL 1 DAY);   // 明天 2022-06-28
SELECT ADDDATE(CURDATE(),INTERVAL 1 MONTH); // 一个月后 2022-07-27

2、时间日期减函数:SUBDATE()

SELECT CURDATE();    // 2022-06-27
SELECT SUBDATE(CURDATE(),2);    // 2022-06-25

3、时段函数:PERIOD_ADD(period, number)、PERIOD_DIFF(period1, period2)

SELECT PERIOD_ADD(202201,6); // 202207
SELECT PERIOD_DIFF(202207,202201);  // 月份差值 6

4、返回是第几季度:QUARTER(),1-4 季度

// now() 2022-06-27
SELECT QUARTER(NOW());  // 2

查询示例(通过以上内置函数组合查询)

组合方式不仅仅只有一种,下面也不是列举了所有的实现组合

1、查询当天的数据

SELECT * FROM tab where DATE(create_time) = CURDATE();
SELECT * FROM tab where TO_DAYS(create_time) = TO_DAYS(NOW());

2、查询昨天的数据

SELECT * FROM tab where DATE(create_time) = SUBDATE(CURDATE(),1);

3、查询7天内的数据

SELECT * FROM tab where DATE(create_time) >= SUBDATE(CURDATE(),7);
SELECT * FROM tab where SUBDATE(CURDATE(),INTERVAL 7 DAY) <= DATE(create_time);

4、查询本月的数据

SELECT * FROM tab where DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');

5、查询上月的数据

SELECT * FROM tab where PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(create_time,'%Y%m')) = 1;

6、查询本季度的数据

SELECT * FROM tab where QUARTER(create_time) = QUARTER(now());

7、查询上季度的数据

SELECT * FROM tab where QUARTER(create_time) = QUARTER(DATE_SUB(now(), interval 1 QUARTER));

8、查询本年的数据

SELECT * FROM tab where YEAR(create_time) = YEAR(NOW());

9、查询上年的数据

SELECT * FROM tab where YEAR(create_time) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));

10、查询本周的数据

SELECT * FROM tab where YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW());

11、查询上周的数据

SELECT * FROM tab where YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW()) - 1;

12、查询当前以前6个月以内的数据

SELECT * FROM tab where create_time BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) and NOW();

Mysql - 时间范围筛选相关推荐

  1. hibernate中的hql语句,字符串时间范围筛选处理

    一.疑难问题 1.数据表的业务时间是字符串类型. 2.如何通过hql语句进行业务时间范围筛选. 二.解决方法 1.将业务时间字符串类型转换成时间类型. mysql中字符串转时间:str_to_date ...

  2. mysql时间范围查询 索引无效

    https://ask.csdn.net/questions/719039 对于range类型,选择性小于17%了,就会走全表扫描,而非range mysql mysql时间范围查询 索引无效 5C ...

  3. mysql 数据筛选功能_关于数据筛选的详细介绍

    这篇文章主要介绍了MYSQL 一个巧用字符函数做数据筛选的题,需要的朋友可以参考下问题描述:结构:test 有两个字段,分别是col1和col2,都是字符字段,里面的内容都是用,号分隔的三个数字,并且 ...

  4. php mysql多重筛选,如何使用php、html、mysql构建一个多重分类选择列表

    不适用javascript,完全通过php实现多级列表选择,列表数据从数据库获取 A very simple way to build and do a hierarchical html categ ...

  5. [MySQL] 几句MySQL时间筛选SQL语句[进入查看]

    Select all rows inserted within the last 24 hours(最近24小时新插入数据): mysql>SELECT * FROM entries WHERE ...

  6. mysql中筛选不重复值_MYSQL中筛选不重复记录值的示例

    我的wordpress数据库中的wp_postmeta表都有10,000多行了,如果使用两次循环查找判断,虽然我们不累,但是程序运行很累啊. 如果我想用一条语句查询得到name不重复的所有数据,那就必 ...

  7. Elasticsearch根据日期(年-月-日 时:分:秒)进行range(时间范围筛选)

    不知不觉要写第二篇文章了 接着第一篇文章,es实现like复合查询,里面案例有用到通过时间(年-月-日 时:分:秒)进行筛选的, 在这里说下如果通过时间筛选需要对index进行mapping设置滴,不 ...

  8. MySQL条件筛选的使用

    条件筛选 where 条件筛选 select * from student_user where age>20; select * from student_user where age> ...

  9. jpa基于ExampleMatcher,Example实现动态筛选,模糊查询,分页,排序,时间范围筛选

    简介: 素材来源于网络,加入个人理解进行组装,减少后台代码量(偷懒),在代码配置化得路上远行 满足条件: 基础条件赛选(模糊查询) 范围筛选(此文针对于时间,其他类似) 基础分页排序等 优点:代码一次 ...

最新文章

  1. 在Stack Overflow如果语言有问题,请写以下英文
  2. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)
  3. 深入理解Java中的抽象类和接口
  4. python3 的windows下文件操作注意问题
  5. linux 网络RPS/RFS/XPS
  6. PowerVR 7架构解析
  7. 机器学习之使用sklearn构造决策树模型
  8. [转]几种图像处理类库的比较
  9. xp电脑多少位怎么看_怎么看电脑是32位还是64位
  10. centos 虚拟机glibc升级_CentOS 6 glibc升级到2.15
  11. RF+ Appium,如何隐藏Android的键盘?
  12. Python-Pillow给图片加文字
  13. 如何写工学硕士学位论文
  14. 服务降级,限流,削峰
  15. 林光常颠覆传统的养生观 ,养生必读
  16. Chrome 字体模糊解决
  17. C++静态库与动态库的区别?
  18. 4G LTE各band对应的频率一览表
  19. 计算机模拟实验的关系,试说明数值模拟方法的特点,它与理论研究,实验研究有什么关系...
  20. TAOCP作者的高德纳--------有神有关的故事

热门文章

  1. extern C __declspec(dllexport)
  2. 2021年个人盘点总结-希望2022年不要躺平
  3. 【Unity3D游戏开发】基础知识之Tags和Layers (三二)
  4. 推荐几个使用java SpringBoot开发的cms系统
  5. 做客服一定要打字快吗?这些提高效率的打字秘籍记住啦!
  6. Python字典在循环中的使用:用 for 遍历字典
  7. 使用 HD Tune专业版5.50硬盘/固态硬盘使用程序将缩水的u盘恢复至原来的大小
  8. 遥感地物光谱知识整理
  9. Html+css之图文组合
  10. foxmail wine