在MySQL中选择当前周的最好方法是什么

时间:2010-09-22 13:12:26

标签: mysql date group-by

此刻我有这样的事情......

SELECT SUM(a.PaidSingle) AS PaidSingle,
       DATE_FORMAT(a.TimeIn, '%a') AS weekDay
FROM Attendance AS a JOIN MemberDetail AS m ON m.id = a.MemberID
WHERE m.CardNumber = '$cardNo'
AND   WEEK(a.TimeIn, 0) = WEEK(NOW(),0)
GROUP BY weekDay
ORDER BY a.TimeIn

但是在写完这篇文章之后我才明白这将会影响前几年和今年。

我想简单地说,年份=今年,但当然是在12月开始的一周到1月结束,我将只有半个星期。

在MySQL中执行此操作的最佳方法是什么?我应该使用基于PHP的解决方案吗?

2 个答案:

答案 0 :(得分:3)

你正在使用WEEK模式= 0,它返回0-53周数 - 这会导致新年周围出现问题,其中一周是部分时间  可能是'YYYY53',其余的'YYYZ00',如果你愿意的话。

如果您可以使用与DATE_FORMAT%V和%X选项兼容的模式2:

DATE_FORMAT( NOW( ), "%X%V" )

这些仅使用1-53的周数,因此可以在YYYZ年份获得YYYY53周活动。

我不敢满足你对好的要求!

答案 1 :(得分:0)

为什么不选择工作日:

SELET DATE_FORMAT(NOW(), '%u')

here

所述