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

Requêtes MySQL Discussion :

Problème de Date dans une requête hql (base MySql)


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Par défaut Problème de Date dans une requête hql (base MySql)
    Bonjour,
    J'essaye d'écrire l'équivalent de cette requête sql en hql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *from Mouvement m where m.ID_Indi=1489 and DATE_FORMAT( m.Date_Mouvement, '%Y-%m-%d' )="2017-01-27" and m.ID_Type_Mouv=17
    en sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select m from Mouvement m where m.IndiRef=1489 and m.Date.Date='2017-01-27' and m.TypeRef.Id_Type_Mouv=17
    en hql
    Le résultat n'est pas identique dans les 2 cas, la requête sql retourne un enregistrement, la seconde aucun.
    Je sais que le problème se situe au niveau du DateTime et de l'heure, mais je ne trouve pas la bonne façon d'écrire la requête hql pour qu'elle fonctionne.
    Merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Bonjour,

    je pense que vous devriez utiliser la fonction STR_TO_DATE pour la comparaison de date.

    La chaîne "m.Date.Date" est-elle correcte ? J'aurais mis un "Date_Mouvement" dedans vu la première requête.

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 899
    Par défaut
    Salut Popysan.

    La requête mysql n'est pas correcte.
    1) la colonne "date_mouvement" doit être de type "date" et nom de type "varchar" comme on le voit souvent.
    Ce qui implique que le format de stockage des dates est : "YYYY-MM-DD".

    2) La fonction "date_format" sert à convertir une date qui est dès le départ dans le bon format, à savoir "YYYY-MM-DD" et dans le bon type "date" dans un autre format.
    --> https://dev.mysql.com/doc/refman/5.5...on_date-format
    Par Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --------------
    select date_format('2017-01-27', '%d/%m/%Y')
    --------------
     
    +---------------------------------------+
    | date_format('2017-01-27', '%d/%m/%Y') |
    +---------------------------------------+
    | 27/01/2017                            |
    +---------------------------------------+
    3) votre problème est l'envers du §2.
    Votre date est dans un autre format et vous désirez la mettre dans le format "YYYY-MM-DD" pour le type "date".
    Pour convertir une date, on utilise la fonction "str_to_date" :
    --> https://dev.mysql.com/doc/refman/5.5...on_str-to-date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --------------
    select STR_TO_DATE('27/01/2017', '%d/%m/%Y')
    --------------
     
    +---------------------------------------+
    | STR_TO_DATE('27/01/2017', '%d/%m/%Y') |
    +---------------------------------------+
    | 2017-01-27                            |
    +---------------------------------------+
    4) la conversion ne doit pas se faire sur la colonne à tester, mais sur la valeur que vous désirez tester. C'est une question de performance !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where date_mouvement = STR_TO_DATE('27/01/2017', '%d/%m/%Y');
    5) je crois comprendre que votre requête hql concerne Oracle. En faisant une recherche, j'ai trouvé la fonction "to_date".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date(recDate,'MM/DD/YY')
    Vu que je ne connais ni oracle, ni hql, c'est à vérifier !

    Le mieux serait de poser la question dans le forum consacré à Oracle.

    @+

  4. #4
    Membre averti
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Par défaut
    En fait je n'utilise pas la première requête, c'était juste pour vérifier.
    Ma base de données est bien MySql avec Nhibernate, je vais tester le toDate.
    Merci

  5. #5
    Membre averti
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Par défaut
    STR_TO_DATE fonctionne dans la requête hql, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Problème de date dans une requête
    Par lololebricoleur dans le forum Access
    Réponses: 3
    Dernier message: 31/05/2012, 16h49
  2. Problème de count dans une requête HQL
    Par yucf_miagiste dans le forum Hibernate
    Réponses: 0
    Dernier message: 30/11/2010, 14h32
  3. Problème format date dans une requête access
    Par helprojet dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/02/2009, 03h09
  4. Ajouter des jours à une date dans une requête HQL
    Par jojo el merou dans le forum Hibernate
    Réponses: 3
    Dernier message: 30/11/2007, 14h37
  5. problème valeur date dans une requête
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/06/2007, 19h13

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