PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Paramètre Horodatage
Paramètre Horodatage
Débuté par simon, 24 mai 2018 15:06 - 8 réponses
Posté le 24 mai 2018 - 15:06
bonjour

Je veux créer une requête paramétrée sur une rubrique horodatage, ma question comment je filtre uniquement sur date on ignorant l'heure

MaRequete.ParamDateHeures=sai_Date

Merci d'avance
Posté le 24 mai 2018 - 15:27
Bonjour,
Je vois deux solutions:
Appliquer la fonction date() à la rubrique du fichier, mais ça va empêcher
l'utilisation d'un éventuel index.
Utiliser un between, et prendre de 00:00:00 à 23:59:59 avec la date.

Frédéric.

"simon" a écrit dans le message de groupe de discussion :
20181d58109fc11b320ca2de8a7d8e842b9e@news.pcsoft.fr...

bonjour

Je veux créer une requête paramétrée sur une rubrique horodatage, ma
question comment je filtre uniquement sur date on ignorant l'heure

MaRequete.ParamDateHeures=sai_Date

Merci d'avance
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 24 mai 2018 - 18:29
Bonjour,

Essayer un LIKE 'date%'

ex pour la date du jour, WHERE MaDate LIKE '20180524%'
Posté le 25 mai 2018 - 11:47
Merci de vos réponses

Je suis désolé peut être j'ai mal posé ma question.
Les 2 propositions ne seront pas résoudre mon cas, car le filtrage se fait entre période comme ceci:

MaRequete.ParamDateHeures between sai_Date1 and sai_date2 //On ignorant l'heure
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 25 mai 2018 - 12:21
Hello,

Ben c'est pas grave ça, dans ce cas pour ta requete, tu ajoute l'heure a la main :
Pour la borne la plus petite tu ajoute minuit
et pour la borne max tu ajoute 23:59:59
dhDateDepart est une DateHeure = sai_Date1

dhDateFin est une DateHeure = sai_Date2
dhDateFin..Heure = 23
dhDateFin..Minute = 59
dhDateFin..Seconde = 59
dhDateFin..Milliseconde = 999


Tu n'a plus qu'a utiliser dhDateDepart et dhDateFin dans tes parametres de requete pour ton Between


Edit: A verifier mais, je ne sais pas si en HFSQL le between inclus ou pas la date max.. si il ne l'inclus pas tu peux faire plus simple pour DhDateFin en faisant juste :

dhDateFin est une DateHeure = sai_Date2
dhDateFin..Jour++
Message modifié, 25 mai 2018 - 12:24
Posté le 25 mai 2018 - 15:26
Merci François pour vos explication

C'est une bonne idée et ça devrer marcher oui le HFCLS accepte le between
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 25 mai 2018 - 16:08
Je sais qu'il l'accepte, mais ce que je voulais dire c'est est ce que between inclus la date de fin dans la recherche ou si il l'exclus.. ca dépend des SGBD il me semble.
Membre enregistré
3 883 messages
Popularité : +227 (347 votes)
Posté le 25 mai 2018 - 16:38
Bonjour,
Il faut passer par une rubrique calculée.
sELECT
Adhérent.Pk_Adhérent AS Pk_Adhérent,
Adhérent.NDX_NomAdhérent AS Nom,
WL.ChaîneVersDate(WL.Gauche(WL.DateVersChaîne(Adhérent.NDX_DateHeureAdhésion),10)) AS DateAdhésion
FROM
Adhérent
WHERE
WL.ChaîneVersDate(WL.Gauche(WL.DateVersChaîne(Adhérent.NDX_DateHeureAdhésion),10)) BETWEEN {ParamDate1} AND {ParamDate2}

Puis
MaRequete.ParamDate1=SAI_Date1
MaRequete.ParamDate2=Sai_Date2

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 25 mai 2018 - 16:41
Posté le 25 mai 2018 - 17:49
Je l'ai testé ca marche (inclus la date de fin dans)