Какой самый хороший способ выбрать текущую неделю в MySQL - PullRequest
5 голосов
/ 22 сентября 2010

На данный момент у меня есть что-то вроде этого ...

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

Но после того, как я написал это, до меня дошло, что для этого потребуются события предыдущих лет, а также текущего года.1005 * Я хотел просто сказать и год = thisYear, но, конечно, тогда на неделе, начинающейся в декабре и заканчивающейся в январе, я получу только пол недели.

Какой лучший способ сделать это в MySQLили я должен использовать решение на основе PHP?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Вы используете WEEK с режимом = 0, который возвращает номера недели от 0 до 53 - что приводит к проблеме около нового года, где часть недели может быть «YYYY53», а остальные «YYYZ00», если хотите.

Если бы вы могли использовать режим 2, который был бы совместим с опциями DATE_FORMAT % V и% X:

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

В них используются только номера недель от 1 до 53, поэтому можно получить недельное событие YYYY53 для даты в году YYYZ.

Боюсь, не соответствует твоему требованию к милости!

0 голосов
/ 22 сентября 2010

почему бы не выбрать день недели:

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

как описано здесь

...