Probleme de date sous mysql

Eléphant du PHP | 440 Messages

22 oct. 2008, 16:40

Bonjour à tous,


Actuellement nous sommes la semaine 43 (22 octobre 2008), Hors lorsque je fait une requête (pour compter le nombre de réclamation) dans ma base mysql j'obtient 0 alors que si je met la semaine 42 j'ai le bon nombre (qui devrait apparaitre pour la semaine 43) qui apparait.

Comment régler au niveau mysql ce problème de date?

Code : Tout sélectionner

<?php $date = date("d-m-Y"); $heure = date("H:i"); Print("Nous sommes le $date et il est $heure"); ?>

Code : Tout sélectionner

Nous sommes le 22-10-2008 et il est 16:29
Quel paramètre bug au niveau mysql ?
Merci

Guigui69.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 oct. 2008, 16:57

On pourrait voir la requête ? Avec le SQL généré

Eléphant du PHP | 440 Messages

22 oct. 2008, 17:31

Voici la requete pour la semaine 43:

Code : Tout sélectionner

SELECT count( id_reclamation ) as reclamation FROM reclamation WHERE WEEK(date_reclamation) = '43' AND YEAR( date_reclamation ) = '2008'; il y a eu pour cette semaine 0 Réclamationaucune réclamation
La meme pour semaine 42:

Code : Tout sélectionner

SELECT count( id_reclamation ) as reclamation FROM reclamation WHERE WEEK(date_reclamation) = '42' AND YEAR( date_reclamation ) = '2008'; il y a eu pour cette semaine 15 Réclamation Qualité==>6 Quantité==>4 Livraison==>2 Prix==>1 Autres==>2

Code : Tout sélectionner

ID || Date reclamation 1 2008-10-20 2 2008-10-20 3 2008-10-20 4 2008-10-20 5 2008-10-20 9 2008-10-22 15 2008-10-22 etc...
Merci

guigui69

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 oct. 2008, 17:57

Quel paramètre bug au niveau mysql ?
Tu as regardé la documentation de la fonction WEEK() avant de poser cette question j'imagine. (un petit lien pour te rattraper discretos si ce n'est pas le cas ;) : http://dev.mysql.com/doc/refman/5.0/en/ ... ction_week)

Eléphant du PHP | 440 Messages

23 oct. 2008, 12:36

Merci je vient de voir qu'il faillait rajouter un paramètre mais j'ai essayer le 5 ou le 7 ca ne change pas je suis obliger de mettre semaine 42. Pourquoi ?

Merci

guigui69

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 oct. 2008, 13:46

Il faut regarder la méthode de calcul utilisée pour calculer le numéro de semaine, et sélectionner le paramètre en conséquence. Je ne la connais pas par coeur, il y a l'histoire du premier jeudi de l'année etc

Parceque certains paramètre te renvoient 43 :

Code : Tout sélectionner

mysql> SELECT WEEK(NOW(), 1); +----------------+ | WEEK(NOW(), 1) | +----------------+ | 43 | +----------------+ 1 row in set (0.00 sec) mysql> SELECT WEEK(NOW(), 3); +----------------+ | WEEK(NOW(), 3) | +----------------+ | 43 | +----------------+ 1 row in set (0.00 sec) mysql> SELECT WEEK(NOW(), 4); +----------------+ | WEEK(NOW(), 4) | +----------------+ | 43 | +----------------+ 1 row in set (0.00 sec) mysql> SELECT WEEK(NOW(), 6); +----------------+ | WEEK(NOW(), 6) | +----------------+ | 43 | +----------------+ 1 row in set (0.00 sec)
Regarde ici : http://fr.wikipedia.org/wiki/Semaine
organisation internationale de normalisation (ISO) a émis les recommandations suivantes :

1. Le lundi est considéré comme le premier jour de la semaine. (norme ISO 8601 et Académie française[3])
2. Les semaines d'une même année sont numérotées de 01 à 52 (parfois 53).
3. La semaine qui porte le numéro 01 est celle qui contient le premier jeudi de janvier.
4. Il peut exister une semaine n° 53 (années communes finissant un jeudi, bissextiles finissant un jeudi ou un vendredi).
Donc d'après ces critères, c'est le numéro 3 qu'il faudrait utiliser :

Code : Tout sélectionner

Mode First day of week Range Week 1 is the first week … 3 Monday 1-53 with more than 3 days this year