comparer dates

pacific
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 11:21

Salut a tous, dans une table j'ai un champ date en varchar, l'utilisateur entre dans un input la date au format jj/mm/aaaa, je souhaite faire une requete pour avoir tous les enregistrement dont la date est superieur a celle du jour :

$date=date("d/m/Y");
SELECT * FROM agenda WHERE date>'$date';

mais ca compare en tant que nombre (et que le debut cad le jour)

yaurai t-il un moyen sur ce cas de figure de comparer en tant que dates

Merci d'avance

ViPHP
ViPHP | 3300 Messages

28 avr. 2009, 11:34

je pense que ton format de date n'est pas bon

date('Y-m-d') et pas date("d/m/Y");
Fait du php depuis que ca existe ou presque :)

pacific
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 12:32

Merci pour ta réponse, ben j'ai volontairement mi date("d/m/Y") pour que ca coincide lors de la comparaison avec le format jj/mm/aaaa de l'utilisateur, mais en testant Y-m-d je vois que rien ne change ...

D4Y
Eléphant du PHP | 52 Messages

28 avr. 2009, 12:55

Vérifier la manière dont est affiché un "echo $agenda['date']" de la récupération de la date dans ta base donnée. Tu auras comme ça avec certitude , le format dans laquel tu dois introduire la tienne.

En principe : YYYY-mm-dd

Eléphanteau du PHP | 30 Messages

28 avr. 2009, 12:56

Pourquoi se casser la tête avec un varchar déjà ? Pour comparer des dates y'a un type de colonne date, avec un format normé (AAAA-MM-JJ comme indiqué dans les autres réponses) qui facilite les tris, et des fonctions qui vont bien.

Ensuite tu reformates à l'affichage et l'enregistrement, c'est pas long.

Avec une date bien stockée ta requête serait ça :

Code : Tout sélectionner

SELECT * FROM agenda WHERE date > NOW();
Là forcément, comparer une chaîne avec des slashes dedans, ça va être plus compliqué.

Il y a un sujet dans la FAQ pour manipuler des dates : http://www.phpfrance.com/forums/voir_sujet-8323.php

pacific
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 13:21

j'ai fais l'echo les dates sont au meme format, en ce qui concerne le champs date c'est ce que j'ai fais au début mais comme l'utilisateur entre une date a partir d'un input lorsque je met un champ de type date jai 0000-00-00 ou Null

pacific
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 13:24

Ah pardon, j'avai pas lu "reformatage a l'enregistrement" ok je vais trouver ca ... Merci bocou

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 avr. 2009, 15:09

Le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Quelques petites manipulations avec les dates (PHP/MySQL) ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...