mysql查询昨天、前天、上周一、上周日、上一月第一天到最后一天的数据

目录

昨天:

前天:

本周:

上周:

上上周:

本月:

上一个月:

上两个月:


昨天:

-- 昨天
select date_sub(curdate(), interval 1 day) '昨天';
-- 查询昨天的数据
select * from 表名
where date(时间字段) = date_sub(curdate(), interval 1 day)

前天:

-- 前天
select date_sub(curdate(), interval 2 day) '前天';
-- 查询前天的数据
select * from 表名
where date(时间字段) = date_sub(curdate(), interval 2 day)

本周:

-- 本周一
select date_sub(curdate(), interval weekday(curdate()) day) '本周一';
-- 本周日
select date_sub(curdate(), interval weekday(curdate()) -6 day) '本周日';
-- 查询本周一至本周日的数据
select * from 表名
where date(时间字段) >= date_sub(curdate(), interval weekday(curdate()) day) 
and date(时间字段) <= date_sub(curdate(), interval weekday(curdate()) -6 day)

上周:

-- 上周一
select date_sub(curdate(), interval weekday(curdate()) + 7 day) '上周一';
-- 上周日
select date_sub(curdate(), interval weekday(curdate()) + 1 day) '上周日';
-- 查询上周一至上周日的数据
select * from 表名
where date(时间字段) >= date_sub(curdate(), interval weekday(curdate()) + 7 day)
and date(时间字段) <= date_sub(curdate(), interval weekday(curdate()) + 1 day)

上上周:

-- 上上周一
select date_sub(curdate(), interval weekday(curdate()) + 14 day) '上上周一';
-- 上上周日
select date_sub(curdate(), interval weekday(curdate()) + 8 day) '上上周日';
-- 查询上上周一至上上周日的数据
select * from 表名
where date(时间字段) >= date_sub(curdate(), interval weekday(curdate()) + 14 day)
and date(时间字段) <= date_sub(curdate(), interval weekday(curdate()) + 8 day)

本月:

-- 本月
select date_format(curdate(), '%Y%m') '本月';
-- 查询本月的数据
select * from 表名
where date_format(时间字段, '%Y%m') = date_format(curdate(), '%Y%m')

上一个月:

-- 查询上一个月(1号到最后一天)的数据
select * from 表名
where period_diff(date_format(curdate(), '%Y%m'), date_format(时间字段, '%Y%m')) = 1

上两个月:

-- 查询上两个月(1号到最后一天)的数据
select * from 表名
where period_diff(date_format(curdate(), '%Y%m'), date_format(时间字段, '%Y%m')) = 2

猜你喜欢

转载自blog.csdn.net/u011974797/article/details/130385989