Mysql常用日期查询
常用时间函数
1、date(日期类型数据)
返回日期或日期/时间表达式的日期部分
2、now()
无参数,返回当前的日期和时间
3、curdate()
无参数,返回当前的日期
4、to_days(日期类型数据)
给定一个日期date, 返回一个天数 (从年份0000-00-00开始的天数 )
5、date_sub(date,interval expr type)
从日期减去指定的时间间隔
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数()常用:day、week、month、quarter|、year
6、date_format(日期类型数据,‘日期格式’)
用于以不同的格式显示日期/时间数据
常用日期格式:%Y % M %D % H %I %S
7、period_diff(p1,p2)
返回周期P1和P2之间的月数, P1和P2格式为YYMM或YYYYMM,注意周期参数 P1 和 P2 都不是日期值
8、quarter(d)
返回日期d是一年中的第几季度,值的范围是1~4
9、year week(date[,mode])
获取年份和周数的一个函数,常用mode为0和1,0表示星期天为第一天,1表示星期一为第一天(其中mode可省略,默认为0)
常用查询示例
表:order (id,create_time)
1、查询当天的数据
select * from order_1 where
to_days(create_time)=to_days(now());
2、查询昨天的数据
select * from order_1 where
to_days(now())-to_days(create_time) =1;
3、查询最近7天的数据(包括今天一共7天)
select * from order_1 where
date_sub(curdate(),interval 7 day) < date(create_time);
4、查询最近30天的数据(包括今天一共30天)
select * from order_1 where
date_sub(curdate(),interval 30 day) < date(create_time);
5、查询当月(本月)的数据
select * from order_1 where
date_format(curdate(),‘%y%m’) = date_format(create_time,‘%y%m’);
6、查询上个月的数据
select * from order_1 where
period_diff(date_format(now(),‘%Y%m’),date_format(create_time,‘%Y%m’))=1;
7、查询本季度的数据
select * from order_1 where
quarter(create_time) = quarter(now());
8、查询上季度的数据
select * from order_1 where
quarter(create_time) =quarter(date_sub(curdate(),interval 1 quarter));
9、查询当年(今年)的数据
select * from order_1 where
year(create_time) = year(now());
10、查询去年的数据
select * from order_1 where
year(create_time) = year(date_sub(now(),interval 1 year));
11、查询当前这周的数据
select * from order_1 where
yearweek(date_format(create_time, ‘%Y-%m-%d’),1) = yearweek(now(),1);
12、查询上周的数据
select * from order_1 where
yearweek(date_format(create_time, ‘%Y-%m-%d’),1) = yearweek(now(),1)-1;
13、查询距离当前现在6个月的数据
select * from order_1 where
create_timebetween date_sub(now(),interval 6 month) and now();