mysql查询当天、本周、最近xx天、本月 的数据

本文介绍如何使用SQL查询特定日期范围内的数据,包括当天、本周、最近七天、本月及跨月查询等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:http://blog.youkuaiyun.com/SunFlowerXT/article/details/70159456?locationNum=13&fps=1

-- 当天

SELECT * FROM  cc_task WHERE  to_days(CREATE_DATE) = to_days(now());

-- 本周
SELECT * FROM cc_task WHERE YEARWEEK(date_format(CREATE_DATE,'%Y-%m-%d'),1) = YEARWEEK(now(),1);


【注】:

-- 查询本周:
SELECT yearweek( '2017-10-08 15:38:22',1 ) -- 结果是201740
SELECT yearweek( '2017-10-08 15:38:22' ) -- 结果是201741
SELECT yearweek( '2017-10-09 15:38:22' ) -- 结果是201741
-- yearweek的第2个参数设置为1的原因是,中国人习惯把周1作为本周的第一天
-- 另外补充下:
-- 2017-10-08 是周日,2017-10-09是周一。
SELECT dayofweek( '2017-10-08 15:38:22' )--  查询出的是1,把周日作为一周的第1天。
SELECT dayofweek( '2017-10-09 15:38:22' )-- 查询出的是2,把周一作为一周的第2天。
SELECT weekday( '2017-10-08 15:38:22' )--  查询出的是6,
SELECT weekday( '2017-10-09 15:38:22' )--  查询出的是0,
-- 所以建议使用weekday,查询出来的结果+1就可以了,就比较符合国人的习惯了。
SELECT * FROM `table_name` WHERE YEARWEEK(date_format(时间字段,'%Y-%m-%d'),1) = YEARWEEK(now(),1);

-- 最近7天
SELECT TASK_ID,CREATE_DATE FROM  cc_task  where date_sub(curdate(), INTERVAL 7 DAY) <= CREATE_DATE;  -- CREATE_DATE为(时间字段)

-- 前7天

SELECT TASK_ID,CREATE_DATE FROM  cc_task WHERE CREATE_DATE between date_sub(now(),interval 7 DAY) and now();
-- 查询距离当前现在6个月的数据(前6个月)
SELECT TASK_ID,CREATE_DATE FROM  cc_task WHERE CREATE_DATE between date_sub(now(),interval 6 month) and now();

-- 本月
SELECT TASK_ID,CREATE_DATE FROM  cc_task where date_format(CREATE_DATE, '%Y%m') = date_format(curdate() , '%Y%m');
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE YEAR(date_format(create_date,'%y-%m-%d')) = YEAR(now()) and MONTH(date_format(create_date,'%y-%m-%d')) = MONTH(now()); 
 
-- 上个月
SELECT TASK_ID,CREATE_DATE FROM cc_task WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( CREATE_DATE, '%Y%m' ) ) =1
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE date_format(create_date,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m');
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE DATE_FORMAT(create_date,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m')-1 ; 
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE YEAR(date_format(create_date,'%y-%m-%d')) = YEAR(now()) and MONTH(date_format(create_date,'%y-%m-%d')) = MONTH(now())-1; 
 
-- 本季度
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE QUARTER(create_date)=QUARTER(now());


-- 查询上季度数据
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
-- 查询本年数据
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE YEAR(create_date)=YEAR(NOW());
-- 查询上年数据
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE year(create_date)=year(date_sub(now(),interval 1 year));
-- 查询明年数据
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE year(create_date)=year(date_sub(now(),interval -1 year));
 
-- 查询上周的数据
SELECT TASK_ID,CREATE_DATE FROM cc_task  WHERE YEARWEEK(date_format(create_date,'%Y-%m-%d')) = YEARWEEK(now())-1;


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值