mysql历史时间查询
今天、昨天、7天、近30天、本月、上一个月
select * from 表名 where to_days(时间字段名) = to_days(now());
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS(时间字段名) <= 1;
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名);
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名);
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;
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now())-1;
季度、年、距离时间查询语句
SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(now());
SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW());
SELECT * FROM 表名 WHERE year(时间字段名)=year(date_sub(now(),interval 1 year));
SELECT * FROM 表名 WHERE 时间字段名 between date_sub(now(),interval 某(例如:6) month) and now();
指定时间段的数据
SELECT * FROM 表名 WHERE (时间) between '2020-1-1 00:00:00' and '2021-1-1 00:00:00';
SELECT * FROM 表名 WHERE (时间) >='2020-1-1 00:00:00' and (时间) < '2021-1-1 00:00:00';
备注一些基本的时间函数的说明:
- 获取系统的当前时间
CURDATE();
NOW();
- 获取时间的差
period_diff()
datediff(date1,date2)
timediff(time1,time2)
- 时间加减
date_sub()
date_add()
adddate()
addtime()
period_add(P,N)
- 时间格式化
date_format(date, format)
unix_timestamp()
str_to_date(str, format)
from_unixtime(unix_timestamp, format)