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 :
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.
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 :
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
Partager