记录mysql时间函数一周从周日开始的问题

国外的一周是从周日到下周六,所以我们在使用时间函数查询一周的数据的时候,你要是不知道这个冷知识的时候那么恭喜你数据结果就错了,我就犯了一次,上线半年以后才发现,所以记录,告诫大家

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭优秀的笔记

你的支持就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值