Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1412 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mysql et php renvoient pas le bon N° de semaine ou l'année

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mysql et php renvoient pas le bon N° de semaine ou l'année

n°2169889
rufo
Pas me confondre avec Lycos!
Posté le 04-01-2013 à 16:37:42  profilanswer
 

Bonjour,
 
Au passage du 01/01/2013, je me suis rendu compte que le bug sur le n° de semaine et l'année renvoyés par Mysql ou PHP n'étaient toujours pas corrigé. Je m'explique : pour la date du 31/12/2012, le n° de semaine, d'après la norme iso est 01. Donc, si je veux avoir l'année et le N° de semaine associés à cette date, je devrais obtenir, pour être cohérent "2013-01" puisque la date est le 1er jour de la première semaine de 2013.
 
Problème, Mysql, avec sa fonction YEARWEEK() renvoie 201253 donc la mauvaise année et le mauvais n° de semaine.
 
Avec PHP, quand je fais date("Y-W" strtotime("2012-12-31" )) il me renvoie "2012-01" : là, j'ai la mauvaise année mais le bon n° de semaine.
 
Défaut constaté sur des mysql 5.0.45 et 5.1.46 et des PHP 5.2.4 et 5.3.3
 
Conclusion : que faire? Pour PHP, j'ai fait une fonction qui renvoie la bonne année et le bon n° de semaine pour une date donnée mais pour Mysql, je fais comment? :/ Y'a t-il une version plus récente qui corrige ce bug?
 
Merci par avance.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 04-01-2013 à 16:37:42  profilanswer
 

n°2169947
CyberDenix
Posté le 05-01-2013 à 01:43:22  profilanswer
 

En PHP :  
 

Code :
  1. echo date('o', mktime(0, 0, 0, 12, 31, 2012));


 
répond-t-il à ton problème ?
 
 
Pour MySQL, c'est un bug documenté
http://dev.mysql.com/doc/refman/5. [...] n_yearweek
 
Mais je ne comprends pas pourquoi tu cherches à effectuer ce type d'interrogation en MySQL. PHP ne te suffit-il pas pour préparamétrer tes requêtes SQL ?


Message édité par CyberDenix le 05-01-2013 à 01:54:38

---------------
Directeur Technique (CTO)
n°2169956
tsoko
Posté le 05-01-2013 à 10:39:30  profilanswer
 

Oui normalement, PHP est suffisant.
L'heure système de votre serveur n'est peut-être pas à jour?


---------------
Besoin d'aide pour votre projet? agence web
n°2170021
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2013 à 14:17:09  profilanswer
 

En fait, je voulais faire une requête du genre "trouves moi tous les enregistrements de la table "X" dont le champ de type Date "Y" fait partie de la semaine "201301" (ou une autre année et semaine, l'année et semaine étant calculées en fonction d'une variable php contenant une date).
 
Finalement, j'ai résolu mon pb en calculant les dates de début et de fin de l'année et semaine provenant de la date filée en paramètre et après dans mon sql, je fais un between de mon champ "Y" entre les 2 date de début et de fin calculées précédemment,, mais c'est moins pratique.
 
Pa rapport au bug documenté "The year in the result may be different from the year in the date argument for the first and the last week of the year. ", ils disent pas que c'est un bug, juste que l'année peut être différente pour la dernière et première semaine d'une année. Et ça, c'est juste. C'est le n° de semaine qui est faux :/ Et ça, ils le disent pas. En efet, 2012 n'a pas 53 semaines mais 52... Je ne comprends pas que des gens aussi bons que ceux qui codent Mysql, depuis le temps (parce que ce n'est pas nouveau ce bug, il existe depuis mysql 3.23 au moins), n'aient pas corrigé ça... :??:
 
Edit : merci pour le paramètre 'o' de date(). J'étais passé à côté, j'avais cherché dans la section relative aux semaines :(


Message édité par rufo le 06-01-2013 à 14:20:26

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2170047
CyberDenix
Posté le 06-01-2013 à 21:01:24  profilanswer
 

J'étais ironique.  :D  
 
On est bien d'accord sur l'histoire des 52/53 semaines, c'est du grand n'importe quoi.
 
Ouvre un bug mysql, ca coûte rien de le signaler comme "bug" et non comme feature !


Message édité par CyberDenix le 06-01-2013 à 21:02:18

---------------
Directeur Technique (CTO)
n°2186256
alcaribou2
Posté le 17-04-2013 à 13:37:20  profilanswer
 

Bonjour,
je viens d'expérimenter le code suivant :
MID(YEARWEEK(n.date_creation,1),5,2)
avec succès.
est-ce que cela fonctionne pour vous ?

n°2186270
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2013 à 15:03:26  profilanswer
 

y compris pour le 31/12/2012 et le 01/01/2013 ? Vous trouvez bien 2013-01?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2186306
bistouille
Posté le 17-04-2013 à 19:36:34  profilanswer
 

Nope, 53 chez moi :D
 
Je connaissais pas ce bug...

n°2186339
rufo
Pas me confondre avec Lycos!
Posté le 18-04-2013 à 09:41:34  profilanswer
 

C'est vrai que ça peut surprendre un bug aussi con-con qui dure depuis si longtemps sur un produit comme Mysql et qui serait tellement facile à corriger :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mysql et php renvoient pas le bon N° de semaine ou l'année

 

Sujets relatifs
Requette Mysql sur serveur mutualisé ovhAfficher une page suivant une donnée MySQL
Extraire table mysql pour copier avec modif dans une autre[MySQL] Select qui renvoie la valeur n-1 et +1 pour chaque enregistre
[MySQL] champs date et suite de row consecutive...Administration Mysql sous EasyPhp
Création d'un tableau html (lignes + colonnes) avec mysqlProblème Connection MySQL sur mon VPS
Difficultés MysqlOverflow (erreur N°6) sur méthode de box-muller/monte-carlo
Plus de sujets relatifs à : Mysql et php renvoient pas le bon N° de semaine ou l'année


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR