SQL根据时间范围查询

根据时间查询,今天、昨天、近七天、近三十天、本月、上个月….

下面代码中 my_table 是表名,time_column 是时间列 自行替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-- 今天  
select * from my_table where to_days(time_column) <= to_days(now());
-- 昨天
select * from my_table where to_days(NOW()) - TO_DAYS(time_column) <= 1;
-- 近7天
select * from my_table where date_sub(CURDATE(),INTERVAL 7 DAY) <= DATE(time_column);
-- 近30天
SELECT * FROM my_table where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(time_column);
-- 本月
SELECT * FROM my_table WHERE DATE_FORMAT( time_column, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' );
-- 上一月
SELECT * FROM my_table WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( time_column, '%Y%m' ) ) =1;
-- 查询本季度数据
select * FROM my_table where QUARTER(time_column)=QUARTER(now());
-- 查询上季度数据
select * FROM my_table where QUARTER(time_column)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
-- 查询本年数据
select * FROM my_table where YEAR(time_column)=YEAR(NOW());
-- 查询上年数据
select * FROM my_table where year(time_column)=year(date_sub(now(),interval 1 year));
-- 查询距离当前现在6个月的数据
select * FROM my_table where time_column between date_sub(now(),interval 6 month) and now();
-- 查询当前这周的数据
SELECT * FROM my_table WHERE YEARWEEK(date_format(time_column,'%Y-%m-%d')) = YEARWEEK(now());
-- 查询上周的数据
SELECT * FROM my_table WHERE YEARWEEK(date_format(time_column,'%Y-%m-%d')) = YEARWEEK(now())-1;
-- 查询上个月的数据
select * FROM my_table where date_format(time_column,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m');
-- 查询当前月份的数据
select * FROM my_table where DATE_FORMAT(time_column,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
select * FROM my_table where date_format(time_column,'%Y-%m')=date_format(now(),'%Y-%m');
-- 查询指定时间段的数据
select * FROM my_table where time_column between '2017-1-1 00:00:00' and '2018-1-1 00:00:00';
select * FROM my_table where time_column >='2017-1-1 00:00:00' and addedTime < '2018-1-1 00:00:00';