mysql 查询当天、本周,本月,上一个月的数据

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());

你可能感兴趣的:(mysql)