7
votes

MySQL: plage de la semaine plage du numéro de semaine dans une requête

J'ai une table de base de données qui ressemble à ceci comme suit:

| day_start           | day_end           | cnt
---------------------------------------------------------
| 08 Feb 2010 00:00   | 15 Feb 2010 00:00 | 55 
| 15 Feb 2010 00:00   | 22 Feb 2010 00:00 | 76
| 22 Feb 2010 00:00   | 01 Mar 2010 00:00 | 756


2 commentaires

Cette approche ne fonctionne pas terriblement bien si vous avez des données de différentes années dans la même table - % u donne le numéro de la semaine (où le dimanche est le premier jour de la semaine) - Le premier dimanche 2009 serait de 1, tout comme le premier dimanche de 2010. Vous pourriez avoir besoin d'une approche différente. Jetez un coup d'œil à Dev. mysql.com/doc/refman/5.1/fr/...


Mes rapports sont spécifiques d'année, j'ai édité la question


3 Réponses :


3
votes

Si cette colonne "Semaine" stocke le numéro d'une semaine donnée dans un an, vous pouvez simplement la convertir en une chaîne de date à l'aide de la fonction makedate.

select makedate(2010, week * 7);


1 commentaires

J'ai des données, dans lesquelles nous avons une colonne load_date. Maintenant, je veux convertir la date en semaine. Dites load_date vient de 2013-01-01 à 2013-01-07 . Il devrait le retourner comme semaine1.Et de 2013-01-08 à 2013-01-15 . Il devrait renvoyer le résultat comme semaine2



6
votes

Utiliser str_to_date ('201008 lundi', '% x% v% w'); pour obtenir une date appropriée comme 2010-02-22 puis utilisez Date_format pour obtenir le format dont vous avez besoin.


0 commentaires

0
votes

Je sélectionnerais simplement votre jour_start , puis groupe par cela.

Si vous considérez dimanche le premier jour de la semaine, soustrayez Dayfweek () - 1 à Obtenez le dimanche le plus récent. Ajoutez ensuite 6 jours pour obtenir le samedi suivant. Et c'est votre gamme de dates: xxx


0 commentaires