IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème de date !


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par défaut problème de date !
    coucou
    Je ne sais plus trop ce que je dois envoyer à mysql !
    En gros j'essaye de trouver des enregistrements entre deux dates avec une requete de la forme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM messages WHERE dateHeure between '2007-02-19' and '2007-03-20' AND (etat='0' OR etat='1' OR etat='3')

    mais par exemple pour ce cas il m'a retourné un enregistrement du 2007-02-19 mais pas du 2007-03-20 ...

    de plus je dois aussi trouver des enregistrements sur une date unique et là je bloque ...
    j'ai regardé toutes les fonctions de date_time de mysql et j'ai rien trouvé !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM messages WHERE dateHeure = '2007-02-19'
    pourquoi ne peux t on pas écrire cela comme ca ?

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Les requêtes me semblent bonnes. Est-ce que le format correspond à ce qui est déclaré dans la base ? Par exemple, si la colonne 'dateHeure' est un timestamp, ça ne va pas marcher. Sur MySQL, le format 'yyyy-mm-dd' correspond au type 'datetime'.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par défaut
    hum ...
    en fait dans ma base j'enregistre des date yyyy-mm-dd hh:mm:ss dans une colonne DateTime
    mais je ne peux rechercher que sur du "yyyy-mm-dd" ...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM messages WHERE dateHeure between '2007-02-19 00:00:01' and '2007-03-20 23:59:59' AND (etat='0' OR etat='1' OR etat='3')

    Pour obtenir cette requête tu concatènes l'heure "à la main", ca peut être une solution ?

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Oui, ça ne devrait pas être bloquant. En tout cas, chez moi, ça marche

    Au risque de poser des questions bêtes :

    1 - pour ta requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM messages 
    WHERE dateHeure between '2007-02-19' and '2007-03-20' 
    AND (etat='0' OR etat='1' OR etat='3')
    qui ne renvoie qu'un enregistrement du 2007-02-19 mais pas celui du 2007-03-20 (ce qui, soit dit en passant, prouve que le format est accepté), est-ce que ce n'est pas du à la colonne 'etat' (deuxième partie de la requête après le AND) ?

    2 -
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM messages WHERE dateHeure = '2007-02-19'
    pourquoi ne peux t on pas écrire cela comme ca ?
    Quelle erreur te renvoie le sgbd ?

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par défaut
    1 - Non il ne me semble pas que cela vienne de Etat
    2 - Le sgbd ne me renvoit rien ! Pas d'enregistrements

    (Ratapapa) Je n'ai pas de problèmes avec l'heure dans le cas du between ... c'est ca qui m'échappe aussi ..

    Donc en fait dans ma table j'ai des enregistrements type :
    2007-02-19 15:49:37
    2007-02-14 13:31:22

    et moi je voudrais qu'en écrivant
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM messages WHERE dateHeure = '2007-02-14'
    il me sorte le deuxième ... or ce n'est pas le cas (le bougre !!)

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Voila pourquoi j'utilise systématiquement des varchar pour stocker mes dates

    Sinon une requete comme ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM messages WHERE dateHeure LIKE '2007-02-14' 
     
    //ou ceci 
    SELECT * FROM messages WHERE dateHeure LIKE '2007-02-14%'

    te donne quoi ?

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par défaut
    lol on a eu la même idée en mm temps ...
    J'allais répondre en disant que j'avais pris un VARCHAR et un LIKE ...
    thx

  9. #9
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Des varchar pour stocker les dates... C'est une façon de dissimuler le problème, pas vraiment de le résoudre.

Discussions similaires

  1. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  2. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  3. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo