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