当前位置:   article > 正文

MySQL 常用时间相关查询(当天、本周、本月、本季度、本年)_mysql查询时间范围是当月

mysql查询时间范围是当月

  1. -- 今天
  2. SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());
  3. -- 昨天
  4. SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 1;
  5. -- 本周
  6. SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW());
  7. -- 上周
  8. SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW())-1;
  9. -- 近7
  10. SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名);
  11. -- 近30
  12. SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(时间字段名);
  13. -- 本月
  14. SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
  15. -- 上月
  16. SELECT * FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(时间字段名,'%Y%m')) = 1;
  17. SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ;
  18. SELECT * FROM 表名 WHERE WEEKOFYEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = WEEKOFYEAR(NOW());
  19. SELECT * FROM 表名 WHERE MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW());
  20. SELECT * FROM 表名 WHERE YEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = YEAR(NOW()) AND MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW());
  21. -- 近6个月
  22. SELECT * FROM 表名 WHERE 时间字段名 BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW();
  23. -- 本季度
  24. SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(NOW());
  25. -- 上季度
  26. SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));
  27. -- 本年
  28. SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW());
  29. -- 去年
  30. SELECT * FROM 表名 WHERE YEAR(时间字段名) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));

时间差函数:timestampdiff
语法:timestampdiff(interval, datetime1,datetime2)

结果:返回(时间2-时间1)的时间差,结果单位由 interval 参数给出。

类型(interval)单位
frac_second毫秒(低版本不支持,用second,再除于1000)
second
minute分钟
hour小时
day
week
month
quarter季度
year

注意:MySQL 5.6之后才支持毫秒的记录和计算,如果是之前的版本,最好是在数据库除 datetime 类型之外的字段,再建立用于存储毫秒的 int 字段,然后自己进行转换计算。

  1. SELECT TIMESTAMPDIFF(FRAC_SECOND,'2021-10-01','2022-01-13'); # 暂不支持
  2. SELECT TIMESTAMPDIFF(SECOND,'2021-10-01','2022-01-13'); # 8985600
  3. SELECT TIMESTAMPDIFF(MINUTE,'2021-10-01','2022-01-13'); # 149760
  4. SELECT TIMESTAMPDIFF(HOUR,'2021-10-01','2022-01-13'); # 2496
  5. SELECT TIMESTAMPDIFF(DAY,'2021-10-01','2022-01-13'); # 104
  6. SELECT TIMESTAMPDIFF(WEEK,'2021-10-01','2022-01-13'); # 14
  7. SELECT TIMESTAMPDIFF(MONTH,'2021-10-01','2022-01-13'); # 3
  8. SELECT TIMESTAMPDIFF(QUARTER,'2021-10-01','2022-01-13'); # 1
  9. SELECT TIMESTAMPDIFF(YEAR,'2021-10-01','2022-01-13'); # 0

时间差函数:datediff
语法:传入两个日期参数,比较 DAY 天数,第一个参数减去第二个参数的天数值。

SELECT DATEDIFF(‘2022-01-13’,‘2021-10-01’); # 104

时间差函数:timediff
语法:timediff(time1,time2)

结果:返回两个时间相减得到的差值,time1-time2

SELECT TIMEDIFF(‘2022-05-21 14:51:43’,‘2022-05-19 12:54:43’); # 49:57:00

其他日期函数
now() 函数返回的是当前时间的年月日时分秒
curdate() 函数返回的是年月日信息
curtime() 函数返回的是当前时间的时分秒信息
对一个包含年月日时分秒日期格式化成年月日日期,可以使用 DATE(time) 函数

  1. # 其他日期函数
  2. SELECT NOW(); # 2022-05-21 14:41:00
  3. SELECT CURDATE(); # 2022-05-21
  4. SELECT CURTIME(); # 14:41:38
  5. SELECT DATE(NOW()); # 2022-05-21
  6. SELECT SYSDATE(); # 2022-05-21 14:47:11
  7. SELECT CURRENT_TIME(); # 14:51:30
  8. SELECT CURRENT_TIMESTAMP; # 2022-05-21 14:51:37
  9. SELECT CURRENT_TIMESTAMP(); # 2022-05-21 14:51:43

注意:now() 与 sysdate() 类似,只不过 now() 在执行开始时就获取,而 sysdate() 可以在函数执行时动态获取。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/313836
推荐阅读
相关标签
  

闽ICP备14008679号