Requete, between

Medgueye Messages postés 62 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 20 juin 2009 - 30 juil. 2007 à 15:34
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009 - 31 juil. 2007 à 02:14
Bonjour
je voudrai avoir une aide svp.
j'ai une bd avec une table rvs qui contient un champ date dont le format des dates est de jj/mm/aaaa. Donc si le fait " select date from rvs where date between '12/07/2007' and '15/07/2007'" ca marchera par contre " select date from rvs where date between '12/06/2007' and '01/07/2007'" ne marche pas.
si qlq un a une idée du comment corriger sans changer le format de la date dans la bd.
merci

3 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
30 juil. 2007 à 16:10
Salut,

Je suppose que tes champs dates sont au format texte (mauvaise idée... en passant). Dans ce cas, il faut les convertir en date pour pouvoir les comparer...
select date from rvs 
where STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE('12/06/2007',
 '%m/%d/%Y') and 
STR_TO_DATE('01/07/2007',
 '%m/%d/%Y') 


A+http://www.catb.org/%7Eesr/faqs/smart-questions.html
0
Medgueye Messages postés 62 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 20 juin 2009
30 juil. 2007 à 17:24
select date from rvs 
where STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE('12/06/2007',







 '%m/%d/%Y') and 







STR_TO_DATE('01/07/2007',







 '%m/%d/%Y') 










j'ai permuté %m et %d. %d avant %m et merci il a l'air de bien marché.
merci bcp
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
31 juil. 2007 à 02:14
Utilise les fonction date de ta bdd avec mysql y 'en a pas mal et oublie la syntaxe jj/mm/aaaa et utilise le format internationnal comme le fait mysql aaaa-mm-jj par exemple 2007-07-31
Tu pourra enlever et ajouté une certaine durré avec les fonction mysql.
Renseigne toi, ça marche très bien.

En voici la liste de ceux que je connais (copier coller de mon mémo perso)

Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
CURRENT_DATE()

Retourne l'heure courante au format HH:MM:SS (ou HHMMSS si le résultat est converti en entier)
CURRENT_TIME()

Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
CURRENT_TIMESTAMP()

Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
NOW()

Retourne le nombre de secondes écoulées depuis le 1er Janvier 1970 (Epoch).
UNIX_TIMESTAMP()

Retourne le champ année indiqué par la date.
YEAR()
EX:
monchamp                 MONTH(monchamp)
2002-09-01 20:15:00     09
2002-09-01                 09

MONTH()
DAYOFMONTH(date)
HOUR()
MINUTE()
SECOND()
MONTHNAME()
DAYNAME()

Ajoute un intervalle de temps à la date passée en paramètre.
ADDDATE(date, intervalle)

ADDDATE(monchamp, INTERVAL 1 SECOND)                         2001-01-01 20:00:00         2001-01-01 20:00:01
ADDDATE(monchamp, INTERVAL 1 MINUTE)                         2001-01-01 20:00:00         2001-01-01 20:01:00
ADDDATE(monchamp, INTERVAL 1 HOUR)                             2001-01-01 20:00:00         2001-01-01 21:00:00
ADDDATE(monchamp, INTERVAL 1 DAY)                             2001-01-02 20:00:00         2001-01-02 20:00:00
ADDDATE(monchamp, INTERVAL 1 MONTH)                            2001-01-01 20:00:00         2001-02-01 20:00:00
ADDDATE(monchamp, INTERVAL 1 YEAR)                             2001-01-01 20:00:00         2002-01-01 20:00:00
ADDDATE(monchamp, INTERVAL "01:02" MINUTE_SECOND)             001-01-01 20:00:00             2001-01-01 20:01:02
ADDDATE(monchamp, INTERVAL "01:02" HOUR_MINUTE)             2001-01-01 20:00:00         2001-01-01 21:02:00
ADDDATE(monchamp, INTERVAL "01 02" DAY_HOUR)                 2001-01-01 20:00:00         2001-01-02 22:00:00
ADDDATE(monchamp, INTERVAL "01-02" YEAR_MONTH)                 2001-01-01 20:00:00         2002-03-01 20:00:00
ADDDATE(monchamp, INTERVAL "01:02:03" HOUR_SECOND)             2001-01-01 20:00:00         2001-01-01 21:02:03
ADDDATE(monchamp, INTERVAL "01 02:03" DAY_MINUTE)             2001-01-01 20:00:00         2001-01-02 22:03:00
ADDDATE(monchamp, INTERVAL "01 02:03:04" DAY_SECOND)         2001-01-01 20:00:00         2001-01-02 22:03:04

Ote un intervalle de temps à la date passée en paramètre.
SUBDATE(date, intervalle)

Retourne le numéro du jour dans la semaine (commence à 1 avec Dimanche).
DAYOFWEEK(date)

Retourne le numéro du jour dans l'année (commence à 1).
DAYOFYEAR(date)

Retourne le numéro du jour dans la semaine (commence à 0 avec Lundi).
WEEKDAY(date)

Retourne le numéro de la semaine dans l'année (si "debutsemaine" est à 0 -valeur par défaut- la semaine commence le Dimanche sinon elle commence le Lundi).
WEEK(dateheure[, debutsemaine])

Retourne l'année et numéro de la semaine au format AAAANN (si "debutsemaine" est à 0 -valeur par défaut- la semaine commence le Dimanche sinon elle commence le Lundi).
YEARWEEK(dateheure[, debutsemaine])

Retourne le numéro du trimestre de la date donnée.
QUARTER()

Retourne une heure au format HH:MM:SS (ou HHMMSS si elle est convertie en entier) à partir d'un nombre de secondes.
SEC_TO_TIME()

Retourne en secondes une heure exprimée au format HH:MM:SS
TIME_TO_SEC()

Retourne la date correspondant à N jour depuis l'an 0 (l'an 0 n'existant pas, N doit valoir au moins 366)
FROM_DAYS()

Retourne la date en nombre de jours depuis l'an 0 (la date doit au moins être 1000-01-01)
TO_DAYS()

Retourne au format "AAAA-MM-JJ HH:MM:SS" (ou AAAAMMJJHHMMSS s'il est converti en entier) la date exprimée en secondes depuis le 1er Janvier 1970 (epoch).
FROM_UNIXTIME(nbsecondes)

GRUNENBERGER Benoît
www.UnrealNetwork.net
0
Rejoignez-nous