mybatis针对时间查询
mybatis提供了一些时间转换函数可直接调用,下面举例
今天
select * from 表名 where to_days(时间字段名) = to_days(now());
昨天
select * from 表名 where to_days(now()) - to_days(时间字段名) == 1;
近XX天或近XX周、月、季度、年
DATE_SUB() 函数从日期减去指定的时间间隔。
DATE_SUB(date,INTERVAL expr type)
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 |
# 近7天
select * from 表名 where date_sub(CURDATE(),interval 7 day) <= to_days(时间字段名);
# 近30天
select * from 表名 where date_sub(CURDATE(),interval 30 day) <= to_days(时间字段名);
# 近一周
select * from 表名 where date_sub(CURDATE(),interval 1 WEEK) <= to_days(时间字段名);
# 近一个月
select * from 表名 where date_sub(CURDATE(),interval 1 month) <= to_days(时间字段名);
# 其它可参考type类型,就不一一举例了
日期格式转换
语法
DATE_FORMAT(date,format)
format这里就只介绍几个常用的,详细的格式可去w3c查看:http://www.w3school.com.cn/sql/func_date_format.asp
| 格式 | 描述 |
|---|---|
| %d | 月的天,数值(00-31) |
| %H | 小时 (00-23) |
| %h | 小时 (01-12) |
| %i | 分钟,数值(00-59) |
| %s | 秒(00-59) |
| %T | 时间, 24-小时 (hh:mm:ss)) |
| %m | 月,数值(00-12) |
| %Y | 年,4 位 |
查询本月
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
period_diff(p1,p2)
返回周期p1和 p2 之间的月份数。p1 和p2 的格式应该为yymm或yyyymm。注意周期参数 p1和p2 不是日期值。
查询某一季度数据
语法
#返回日期的一年中的季度,范围为1到4。
QUARTER(date)
查询本季度
select * from 表名 where QUARTER(时间字段名)=QUARTER(now());
查询上一季度
select * from 表名 where QUARTER(时间字段名)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
查询本年
select * from 表名 where YEAR(时间字段名)=YEAR(NOW());
继续阅读与本文标签相同的文章
上一篇 :
《计算机视觉:模型、学习和推理》一3.3分类分布
-
MySQL每组求最值的记录与每组前N条记录
2026-05-18栏目: 教程
-
OCP-052考试题库汇总(55)-CUUG内部解答版
2026-05-18栏目: 教程
-
【云栖活动】架构师、产品经理一对一座谈会/WORKSHOP-已截止
2026-05-18栏目: 教程
-
MySQL入门书籍和方法分享
2026-05-18栏目: 教程
-
树莓派4&阿里云物联网平台上云开发实操
2026-05-18栏目: 教程
