今天
select * from 表名 where DATEDIFF(NOW(), 时间字段) = 0
昨天
select * from 表名 where DATEDIFF(NOW(), 时间字段) = 1
近7天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段)
本周
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 DATE_FORMAT(时间字段, '%Y%m') = DATE_FORMAT( CURDATE(), '%Y%m')
上月
select * from 表名 where DATE_FORMAT(时间字段, '%Y%m') - DATE_FORMAT(CURDATE(), '%Y%m') = -1
SQL中常用的日期操作函数
函数 | 描述 | 例子(使用) | 查询结果 |
---|---|---|---|
NOW() | 返回当前日期和时间 | SELECT NOW(); | 2018-09-19 20:57:43 |
CURDATE() | 返回当前日期 | SELECT CURDATE(); | 2018-09-19 |
YEARWEEK(date, mode) | 返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一 | SELECT YEARWEEK("2017-06-15"); | 201724 |
WEEK(d) | 计算日期 d 是本年的第几个星期,范围是 0 到 53 | SELECT WEEK('2011-11-11 11:11:11') | 45 |
DATE_FORMAT(d,f) | 按表达式 f的要求显示日期 d | SELECT DATE_FORMAT('2011-02-15 12:32:59','%Y-%m-%d %H:%i:%S') | 2011-02-15 12:32:59 |
DATE() | 从日期或日期时间表达式中提取日期值 | SELECT DATE("2017-06-15"); | 2017-06-15 |
DATE_SUB(date,INTERVAL expr type) | 函数从日期减去指定的时间间隔。 | SELECT DATE_SUB(DATE("2017-06-15"),INTERVAL 2 DAY) | 2017-06-13 |
DATEDIFF(d1,d2) | 计算日期 d1减去>d2 之间 相隔的天数
|
SELECT DATEDIFF('2021-04-01',DATE('2021-04-02')) | -1 |
网友评论