Requete complexe avec des dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete complexe avec des dates

par Truc » 04 mai 2006, 00:14

Je ne savais pas que ca ne pouvait pas être deja passé en fait :/
T'avais qu'à suivre les événements en temps et en heure :lol:

Sinon voila une requete qui retourne la date la plus proche de la date actuelle (passé ou futur) *
SELECT * , ABS(DATEDIFF(champ_date,CURDATE())) as diff  FROM table ORDER BY diff
* ça retourne la date plus proche même si un événement (ou autre) a lieu dans le futur et qu'une date passée est plus proche elle sera renvoyée.

Après niveau optimisation je préfère la 1ère.

PS: Bunk le [Résolu] s'obtient en cliquant sur le bouton (en haut à gauche)

par Mouet » 03 mai 2006, 23:50

vi mais bon, hors contexte d'un evenement, je sais pas moi :D

Je ne savais pas que ca ne pouvait pas être deja passé en fait :/

par Truc » 03 mai 2006, 23:48

Quel est l'intéret de promouvoir un évènement passé ?

S'il n'y a pas de date en sortie de requête alors il n'y a pas d'évvènement à venir, non ?

par Mouet » 03 mai 2006, 23:39

Oui mais si il y a pas de dates supérieur? :x

par Truc » 03 mai 2006, 23:36

Bhen non puisque la date peux être plus éloignée dans le temps que la date actuelle :?
D'où le " >= " par rapport à la date actuelle.

La requete séléctionne la 1ère date qui est supérieure ou égale à la date courante.

par bunk » 03 mai 2006, 23:34

J'avais une erreur avec ton code Mouet, j'ai essayé avec la requete de Truc ca a l'aire de fonctionner

Merci pour le bou de code quand même

par Mouet » 03 mai 2006, 23:29

Bhen non puisque la date peux être plus éloignée dans le temps que la date actuelle :?

par Truc » 03 mai 2006, 23:25

Et avec une requête comportant un tri comme dis ET une condition sur la date:
SELECT * FROM table WHERE champ_date >= NOW() ORDER BY champ_date LIMIT 1
:-k

par bunk » 03 mai 2006, 23:24

OK merci !

je vais comprendre et tester

par Mouet » 03 mai 2006, 23:18

date1 = 2006-03-01
date2 = 2006-05-12
date3 = 2006-05-14
date4 = 2005-12-07

Pour 2006-05-03

date1 = 202 (l'écart)
date2 = 9 (l'écart)
date3 = 11 (l'écart)
date4 = 9296 (l'écart)

Donc c'est bien la date 2 :-)

par Mouet » 03 mai 2006, 23:14

Alors j'ai peu être une solution (un peu bourin, il est vrai) mais qui devrait marcher.
// On va dire que $da est la date au format 0000-00-00 comme dans tes tables.
$nowdat = date('Ymd');
$ta = preg_replace('-', '', $da);
$ecar1 = $ta - $nowda;
$ecar1 = preg_replace('-', '', $ecar1);
if ($ecar1 <= $ecar) { $bonneid = $x[id]; }
$ecar = $ecar1;

par bunk » 03 mai 2006, 22:59

Voila !

Merci c'est sympa

par Mouet » 03 mai 2006, 22:41

Haaaaaaaaaa...aaaa...aaa. Les dates peuvent être future en fait? Je vais voir ce que je peux faire alors ;D

par bunk » 03 mai 2006, 22:34

par rapport a aujourd'hui, l'evennement le plus proche c'est date2

par Mouet » 03 mai 2006, 22:27

Je ne comprend pas ce qui cloche parce que la 3 est plus proche que la 2 :/