Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 10h12   #1
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 180
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 180
Points : 28
Points : 28
Par défaut Comparaison de date varchar

Bonjour,

Code :
1
2
3
4
5
6
7
SELECT *
FROM auto_nombre_a
WHERE `pays` = 'Allemagne'
HAVING `dates`
BETWEEN DATE( 01 /12 /1989 )
AND DATE( 01 /12 /2000 )
LIMIT 0 , 30
Ma table http://img88.imageshack.us/img88/879...0916at101c.png

Voila ma requete et ma table dates est sous format VARCHAR j'ai besoin de garder ce format mais j'aimerai comparer mes 2 dates, trouver toutes les dates qu'il y a entre 01/12/1989 et 01/12/2000 le résultat de ma requete est incohérente

Je c'est pas si DATE a une utilité dans ma requete, mais si je les retire cela m'affiche aucun résultat...

Merci
tidou95220 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h30   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
D'abord, les dates se stockent dans une colonne de type DATE mais comme...
Citation:
j'ai besoin de garder ce format
on va dire que tu n'y peux rien.

Ensuite...
1) Évite la guerre des étoiles !

2) Les valeurs textuelles et les dates s'écrivent entre apostrophes.
Dans ta requête, le SGBD doit essayer de faire des divisions au lieu de considérer tes chaînes de date dans le BETWEEN.

3) HAVING s'utilise avec GROUP BY.
Ici, je pense qu'il s'agit juste d'une restriction supplémentaire du WHERE donc un AND suffit.

4) Pour pouvoir faire ce que tu veux, il faut que tu convertisses les dates avec la fonction STR_TO_DATE.
Code :
1
2
3
4
5
SELECT -- les colonnes nécessaires et pas étoile !
FROM auto_nombre_a
WHERE pays = 'Allemagne'
    AND STR_TO_DATE(dates, '%d/%m/%Y') BETWEEN '1989-12-01' AND '2000-12-01'
LIMIT 0 , 30
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h41   #3
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 180
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 180
Points : 28
Points : 28
J'etais sur la fonfction STR_TO_DATE ^^Mais tu ma bien aider grand merci a toi c'est parfait je retiens toutes les petites remarques à propos de la syntaxe et de la guerre des ***
Parfait

Juste comment je pourrais inclure la date parce que sa me saute une année ??

Encore merci ^^
tidou95220 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h57   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par tidou95220 Voir le message
Juste comment je pourrais inclure la date parce que sa me saute une année ??
Je ne comprends pas ta question.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h58   #5
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 180
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 180
Points : 28
Points : 28
Non c'est bon en faite merci merci
tidou95220 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h49.


 
 
 
 
Partenaires

Hébergement Web