2010-09-22 4 views
5

Au moment où j'ai quelque chose comme ça ...Quelle est la plus belle façon de sélectionner la semaine en cours dans MySQL

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 

Mais il me vint à l'esprit après avoir écrit que cela va prendre les choses des années précédentes comme ainsi que l'année en cours. Je voulais simplement dire alors et year = thisYear mais bien sûr, puis sur une semaine commençant en décembre et se terminant en janvier, je ne recevrai qu'une demi-semaine.

Quelle est la meilleure façon de faire cela dans MySQL ou dois-je utiliser une solution basée sur PHP?

Répondre

3

Vous utilisez semaine avec mode = 0, qui retourne les numéros de semaine 0-53 - qui mène à un problème autour de la nouvelle année, où une partie de la semaine pourrait être 'YYYY53' et le reste 'YYYZ00' si vous voulez.

Si vous pouvez utiliser le mode 2 qui serait compatible avec les DATE_FORMAT% V et% Options X:

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

Ces seuls numéros de semaine d'utilisation de 1-53, par conséquent, il est possible d'obtenir un événement YYYY53 semaine pour une date dans l'année YYYZ. Ne répond pas à vos exigences de gentillesse J'ai bien peur!

+0

Répond parfaitement à ma question, merci! Et c'est bien plus beau que ce que je pensais devoir faire. Sur le point de mettre en œuvre et de tester, mais à partir de la lecture de la REF MySQL, je ne vois pas de problèmes. – Toby

+0

YEARWEEK (MAINTENANT(), 2) J'ai trouvé aussi produire le même effet. – Toby

0

pourquoi ne pas sélectionner la semaine:

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

comme décrit here

+0

Parce que cela échouera encore si j'ai lundi 15 septembre 2010 et lundi 15 septembre 2009 (ou quel que soit le lundi de cette semaine tombe à ces années) – Toby

+0

vous pouvez facilement ajouter l'année comme le dit le lien, c'est pourquoi je l'a lié –

Questions connexes