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

HyperFileSQL Discussion :

Requète SELECT avec BETWEEN entre 2 dates


Sujet :

HyperFileSQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Agriculteur de bits
    Inscrit en
    Février 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Agriculteur de bits

    Informations forums :
    Inscription : Février 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Requète SELECT avec BETWEEN entre 2 dates
    Bonjour,

    je développe une application mixte en terme de BDD, qui exploite MySQL en frontal, et une base HFSQL client/serveur à titre de référentiel général ; et ce uniquement en lecture seule (à l'heure actuelle).

    Bref, je suis relativement bilingue SQL, mais je rencontre une problématique intéressante avec HFSQL : la sélection de données entre 2 dates.

    Je souhaite récupérer les enregistrement d'une table sur une durée d'un mois. Les dates sont au format JJ/MM/AAAA dans la base HFSQL.
    Selon ma requête, le résultat attendu n'est pas le même :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FICHE, DATE FROM FACTURE.FIC WHERE TypeLigne IN ('F', 'V') AND date between to_date('01/01/2015', 'DD/MM/YYYY') and  to_date('31/03/2016', 'DD/MM/YYYY') ORDER BY DATE
    Résultat : mois de janvier, février. Pas mars ! Comme s'il excluait la borne supérieure.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FICHE, DATE FROM FACTURE.FIC WHERE TypeLigne IN ('F', 'V') AND date between to_date('01/01/2015', 'DD/MM/YYYY') and  to_date('31/01/2015', 'DD/MM/YYYY') ORDER BY DATE
    Résultat : 0 enregistrements. Cela confirmerait que HFSQL exclurait la borne supérieure.

    Le seul moyen d'obtenir le mois de janvier au complet est de rédiger la requête de cette manière :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FICHE, DATE FROM FACTURE.FIC WHERE TypeLigne IN ('F', 'V') AND date between to_date('01/01/2015', 'DD/MM/YYYY') and  to_date('31/02/2015', 'DD/MM/YYYY') ORDER BY DATE
    Oui oui, 31/02 !!! Et là, il me sort les records du 01/01 au 31/01...

    La doc PCSoft explique pourtant que l'opérateur BETWEEN est standard, et que les bornes sont inclues dans le résultat...
    Pour rédiger l'interface, ça va être coton !

    Du recul sur ce problème ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Les dates ne sont pas stockées au format AAAAMMJJ dans HFSQL ?

  3. #3
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    Bonjour,

    je viens de tester avec cette requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select Abo_cli_BTB.date_debut
    from Abo_cli_BTB
    where Abo_cli_BTB.date_debut between to_date('01/09/2015', 'DD/MM/YYYY') and  to_date('30/10/2015', 'DD/MM/YYYY')

    et j'ai bien des dates du mois d'octobre qui remonte.

    En quelle version d'HFSQL es-tu?
    Quelle est le format de ton champs? c'est bien date et pas chaine? et bien de type "aaaammjj" ?


    Dans ton premier exemple dans ton between tu va jusqu'en 2016,est ce voulu?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il y a quelque chose qui me chiffonne dans ce test.
    Si WinDev excluait la borne supérieure, dans le premier cas toutes les lignes du 01/01 au 30/03 devraient être renvoyées, puisque seule la borne supérieure (ici 31/03) serait ignorée.
    De même, pour le test du 01/01 au 31/01, exclure la borne supérieure ne doit pas conduire au rejet des lignes antérieures au 31/01.
    Je ne vois pas pourquoi WinDev exclurait tout un mois, au lieu d'un seul jour.

    Bref je soupçonne un problème de format de date ou de conversion.
    Est-ce que tu peux faire un simple select avec comme date le 20160131 (sans between, et sans conversion), histoire de voir si le format est correct.
    Si ce test est concluant, tu peux faire de même avec un between et comme dates le 20160101 et le 20160331.

    Tatayo.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Les bornes sont bien incluses testé en Windev 20.
    A la base, le code que j'ai corrigé ne fonctionnait pas car le développeur a utilisé des variables de type Date pour renseigner la requete, hors les rubriques de la BDD sont de type DateHeure.
    On cherche donc de tel jour a minuit à tel jour...a minuit et forcément ça ne renvoyait rien. Mais le between fonctionne très bien.

Discussions similaires

  1. [AC-2010] Requête conditionnelle avec recherche entre 2 dates
    Par jorick2000 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/05/2013, 13h44
  2. [MySQL-5.0] Requête conditionnelle avec recherche entre 2 dates
    Par jorick2000 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/04/2013, 17h29
  3. Réponses: 3
    Dernier message: 09/06/2008, 09h17
  4. Pb requête select avec 2 dates
    Par lolymeupy dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/04/2008, 10h15
  5. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38

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