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

Tob*_*oby 5 mysql group-by date

目前我有这样的事情......

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

mar*_*ton 3

您使用的是 mode=0 的 WEEK,它返回从 0-53 的周数 - 这会导致新的一年出现问题,一周的一部分可能是“YYYY53”,其余部分可能是“YYYZ00”(如果您愿意的话)。

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

DATE_FORMAT( NOW( ), "%X%V" )
Run Code Online (Sandbox Code Playgroud)

这些仅使用从 1 到 53 的周数,因此可以获取 YYYZ 年中某个日期的周 YYYY53 事件。

恐怕达不到你对美好的要求!