国外的一周是从周日到下周六,所以我们在使用时间函数查询一周的数据的时候,你要是不知道这个冷知识的时候那么恭喜你数据结果就错了,我就犯了一次,上线半年以后才发现,所以记录,告诫大家
mysql查询本周,上周用到的是YEARWEEK()这个函数
错误写法
SELECT
p.pro_id proId,
p.project_id projectId,
IFNULL( p.project_name, '' ) projectName,
IFNULL( p.donation_area, '' ) donationArea,
COUNT( o.PROJECT_ID ) donationTimes
FROM
* p,
* o
WHERE
1 = 1
AND p.project_id = o.PROJECT_ID
//这里是查询一周的函数,看着没问题,但是是根据国外的时间查询的也就是周日到周六
AND YEARWEEK(date_format(o.CREATE_DATE,'%Y-%m-%d')) =YEARWEEK(now())
AND p.project_on_off = 5
AND p.pro_is_last = 1
AND p.pro_is_del = 0
AND p.project_status IN ( 11, 12, 13, 14 )
AND o.`STATUS` = 1
GROUP BY
p.project_id
ORDER BY
donationTimes DESC
正确写法
SELECT
p.pro_id proId,
p.project_id projectId,
IFNULL( p.project_name, '' ) projectName,
IFNULL( p.donation_area, '' ) donationArea,
COUNT( o.PROJECT_ID ) donationTimes
FROM
* p,
* o
WHERE
1 = 1
AND p.project_id = o.PROJECT_ID
// 划重点不写的话默认是星期日为一周的开始日期,这里为了适用我们的系统,将星期一设置为一周的开始日期,设为1就行了。
AND YEARWEEK(date_format(o.CREATE_DATE,'%Y-%m-%d'),1) =YEARWEEK(now(),1)
AND p.project_on_off = 5
AND p.pro_is_last = 1
AND p.pro_is_del = 0
AND p.project_status IN ( 11, 12, 13, 14 )
AND o.`STATUS` = 1
GROUP BY
p.project_id
ORDER BY
donationTimes DESC
这样就可以了
查询下周 -1,依次推就可以了
YEARWEEK(date_format(A.lrrq,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1