[Requet SQL] Avec des dates....

Avec des dates.... [Requet SQL] - SQL/NoSQL - Programmation

Marsh Posté le 14-02-2005 à 15:15:49    

Voila mon problème:
 
J'ain sotcker dans un Bd, un evenement. Cet evenement à une date de début et un date de fin. Ca c'est ok
 
Ensuite j'ai un calendrier qui affiche un mois entier. Ca aussi c'est ok...
 
Le problème, c'est que j'aimerai pouvoir récupérer tout les évennement du mois en cours... C'est mon problème...
 
J'ai cela comme requete:

Code :
  1. SELECT * FROM sessions WHERE (MONTH(dateDeb)='$mois' AND YEAR(dateDeb)='$annee')


 
Mais si il y a un évenement qui se commence, disons au mois de novembre de l'année d'avant, ou il fini au moi de mars de l'année suivante, il ne sera pas afficher. Merci de m'aider...


---------------
Donne un poisson à un homme il mangera une journée, Apprends lui à pêcher, il mangera toute sa vie...
Reply

Marsh Posté le 14-02-2005 à 15:15:49   

Reply

Marsh Posté le 14-02-2005 à 16:00:43    

simoes a écrit :


Mais si il y a un évenement qui se commence, disons au mois de novembre de l'année d'avant, ou il fini au moi de mars de l'année suivante, il ne sera pas afficher. Merci de m'aider...


 
 
Je pense que tu n'as pas été assez clair sur ce point simoes
Tu peux e ndire d'avantage ?

Reply

Marsh Posté le 14-02-2005 à 16:03:59    

Visiblement, si un événement créé il y a disons six mois est encore en cours, il ne l'affiche pas.
 
AMHA c'est sur la date de fin qu'il faut faire la requête.
 
Mais c'est pas très clair.

Reply

Marsh Posté le 14-02-2005 à 18:19:55    

SELECT *  
FROM sessions  
WHERE ((MONTH(dateDeb)='$mois' AND YEAR(dateDeb)='$annee')
OR
(MONTH(dateFin)='$mois' AND YEAR(dateFin)='$annee'));
 
ça devrait résoudre ton problème si tu te bases sur les deux dates, enfin si j'ai bien compris ton problème.

Reply

Marsh Posté le 15-02-2005 à 12:05:53    

Merci moi23372, C'est presque cela... Un seul problème c'est que si un évenement commence au mois de décembre et fini en février, cela ne fonctionne pas...


---------------
Donne un poisson à un homme il mangera une journée, Apprends lui à pêcher, il mangera toute sa vie...
Reply

Marsh Posté le 15-02-2005 à 14:36:57    

Ha oké.
 
where date_courante between dateDeb and isnull(dateFin, date_courante)
 
Et là ça devrait marcher.
 
C'est du pseudo-code, date_courante sous Sybase c'est getdate(), sous Oracle je sais plus.
 
Isnull dans d'autres langages ça peut être IFnull, cf. ta doc :o


Message édité par Fred999 le 15-02-2005 à 14:37:54
Reply

Marsh Posté le 15-02-2005 à 16:43:52    

Fred999 a écrit :


C'est du pseudo-code, date_courante sous Sybase c'est getdate(), sous Oracle je sais plus.


sysdate().
Et oui à priori un bête between doit faire le travail sans problèmes.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2005 à 19:52:20    

sous Oracle
 
avant version 9 => Sysdate
a partir de version 9 => Sysdate ou CurrentDate (CurrentDate est la norme SQL2)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed