Page 1 sur 1

comparer 2 dates

Posté : 05 juil. 2005, 14:00
par Yam
Bonjour,
j'aimerais savoir comment comparer deux dates du type 2005-03-05

Je voudrais en fait sélectionner des évènements ayant eu lieu dans une période choisie et sur un lieu précis apres le remplissage du formulaire.

Au début l'utilisateur dois remplir un formulaire dans lequel il choisi un lieu ($lieu) et une période : de $date1 à $date2

la table contient un lieu, l'évenement et la date de l'évènement ($datetime)

j'ai écris :
"SELECT évènement FROM table WHERE lieu='$lieu' && '$date1'< datetime<'$date2' ORDER BY datetime DESC"
mais cela me sélectionne tous les évènements du lieu choisi sans prendre en compte le filtre de la période.

Quelqu'un pourrait-il m'éclairer ?

Posté : 05 juil. 2005, 14:01
par ouckileou
regarde BETWEEN dans la doc MySQL

Posté : 05 juil. 2005, 14:10
par mere-teresa
expression BETWEEN min AND max
Si expression est supérieure ou égale à min et expression est inférieure ou égale à max , BETWEEN retourne 1 , sinon 0 . Ceci est équivalent à l'expression (min <= expression AND expression <= max) si tous les arguments sont du même type. Dans tous les autres cas, la conversion de type prends place, selon les règles suivantes, mais appliquée aux trois arguments. Notez que avant la 4.0.5, les arguments étaient convertis au type de expr .


mysql> SELECT 1 BETWEEN 2 AND 3;
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0

expr NOT BETWEEN min AND max
Même chose que NOT (expr BETWEEN min AND max) .

COALESCE(list)
Retourne le premier élément non- NULL de la liste :


mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL
http://www.nexen.net/docs/mysql/annotee ... ?lien=date

Posté : 06 juil. 2005, 09:37
par Yam
La solution pourrait ressembler à ca ? :
"SELECT évènement FROM table WHERE lieu='$lieu' && datetime=(SELECT datetime BETWEEN $date1 AND $date2)"
Bien sur ca ne marche pas. Il faudrait que je sélectionne les dates comprises entre la date1 et la date2. Comment les récupérer pour les inclure dans le WHERE ?

Posté : 06 juil. 2005, 09:47
par mere-teresa
Bien sur ca ne marche pas.
J'ai plus envie de t'aider, d'un coup :(

edit : C'est pas contre toi, mais ça dégoûte un peu ce genre de commentaire. Si cela ne fonctionne pas, c'est bien de TA faute, pas de la notre. Ton ordi fait ce que TU lui dis de faire.

Posté : 06 juil. 2005, 09:55
par Yam
:shock: euh ben merci quand même mais c'est juste que je vois vraiment pas comment faire (j'ai jamais recu aucun cours de php donc je suis plus que limité)

Posté : 06 juil. 2005, 09:59
par ouckileou
pourquoi fais-tu un deuxième SELECT ?

pour une condition simple en SQL c'est champ = valeur

sauf que là y'a deux valeurs pour le between mais ça ne change pas grand chose

regarde mieux la doc et tu verras ton erreur, simplifie ta requête

Posté : 06 juil. 2005, 10:01
par zeus
Allez, on va mettre la faute sur le tuto qui est peut être pas très clair pour un n00b

Sinon SORTEZ LES VARIABLES DES CHAINES :evil: . Parce que le jour où on utilise un tableau, on se demande pourquoi ça ne marche pas

Et en plus, c'est plus clair à lire avec la coloration syntaxique :wink:
"SELECT évènement FROM table WHERE lieu='".$lieu."' AND datetime BETWEEN '".$date1."' AND '".$date2."'"; 

Posté : 06 juil. 2005, 10:26
par Yam
merci ca marche :D j'étaisd pas trop loin quand même :o

Posté : 06 juil. 2005, 10:29
par ouckileou
non effectivement, c'est pour ça que tu aurais pu trouver tout simple avec le docs et les indications...

mais bon zeus est arrivé, encore plus facile :lol:

Posté : 06 juil. 2005, 10:32
par zeus
Excuse moi ouckileou :oops: mais j'ai essayé de me mettre dans la peau de quelqu'un qui connait pas la syntaxe et je trouvais pas la doc très simple à comprendre (ligne de commande)

En tout cas, c'est pour conseiller de sortir les variables des chaines que j'ai posté à l'origine et je me suis dit que tant qu'a fair, autant l'aider par la même occasion

Posté : 06 juil. 2005, 10:39
par Yam
c'est vrai que l'aide de nexen n'est pas vraiment simple à comprendre pour un débutant partant presque de zéro et ne connaissant pas grand chose à la syntaxe.
Merci pour tout :wink:

Posté : 06 juil. 2005, 10:41
par Yam
edit : C'est pas contre toi, mais ça dégoûte un peu ce genre de commentaire. Si cela ne fonctionne pas, c'est bien de TA faute, pas de la notre[/color]
ca c'est évident, j'ai jamais prétendu le contraire d'ailleurs

Posté : 06 juil. 2005, 10:45
par ouckileou
bah c'est pas grave zeus

et je crois que y'a eu un petit malentendu au-dessus, on oublie ;)