PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → Requete sur mysql avec condition sur date...
Requete sur mysql avec condition sur date...
Iniciado por m.cassamchenai, ago., 10 2005 11:21 AM - 1 resposta
Publicado em agosto, 10 2005 - 11:21 AM
Bonjour,

Je saisis deux dates afin de sélectionner tous les enregs compris entre les deux dates-heures dans une table mc d'une base mysql. la date dans mysql est au format "date-heure" (2005-07-01 12:15:25).

Pour cela je crée une procédure dans windev :
....
[color=blue]PROCEDURE consult_mc(pdatedebut="20050701000000", pdatefin="20050701235959")[/color]....
J'exécute la requete suivante, à l'intérieur de la procedure, par [color=blue]HExécuteRequêteSQL :
"select ID_MC, DATE_F from mc where ((DATE_F>='"+pdatedebut+"') and (DATE_F<='"+pdatefin+"')) order by date_f"[/color]....
Je n'obtiens pas en retour la totalité des enregs. Je n'obtiens que les enregs dont la date est "20050701000000". :( l' enreg "20050701122530", par exemple n'apparait pas.
...
Cependant cette requete fonctionne très bien dans l'outil WDsql - Interrogateur SQL.
....
Pourriez-vous me donner une piste ?
Bonne journée !
Publicado em agosto, 10 2005 - 2:00 PM
Le 10/08/2005, CASSAM-CHENAI Mamodaly a supposé :
Bonjour,

Je saisis deux dates afin de sélectionner tous les enregs compris entre les
deux dates-heures dans une table mc d'une base mysql. la date dans mysql est
au format "date-heure" (2005-07-01 12:15:25).

Pour cela je crée une procédure dans windev :
...
[color=blue]PROCEDURE consult_mc(pdatedebut="20050701000000",
pdatefin="20050701235959")[/color].... J'exécute la requete suivante, à
l'intérieur de la procedure, par [color=blue]HExécuteRequêteSQL : "select
ID_MC, DATE_F from mc where ((DATE_F>='"+pdatedebut+"') and
(DATE_F<='"+pdatefin+"')) order by date_f"[/color].... Je n'obtiens pas en
retour la totalité des enregs. Je n'obtiens que les enregs dont la date est
"20050701000000". :( l' enreg "20050701122530", par exemple n'apparait pas.
.. Cependant cette requete fonctionne très bien dans l'outil WDsql -
Interrogateur SQL. ... Pourriez-vous me donner une piste ? Bonne journée !


j'utiliserais mois la syntaxe suivante
commande="select ID_MC,DATE_F from mc where DATE_F
between"+DateSgbd(pdatedebut,cToSGBD,vrai)+ " AND "+
DateSgbd(pdatefin,cToSGBD,vrai)

avec DateSgbd est une fonction qui convertit les dates
FONCTION DateSGBD(pDate,pConv,withTime=Faux)
// retourne la date au format attendu
//Rappel : cFromSGBD="1",cToSGBD="2"
theDate est chaîne
SELON withTime
CAS Faux
// sans l'heure
SELON pConv
CAS cFromSGBD
SELON gFmtDate
CAS "YYYY-MM-DD"
// La date arrive sous forme YYYY-MM-DD et on la renvoie
sous forme YYYYMMDD
theDate= Gauche(pDate,4)+Milieu(pDate,6,2)+Milieu(pDate,9,2)
CAS "YYYYMMDD"
// La date arrive sous forme YYYYMMDD et on la renvoie sous forme
YYYYMMDD
theDate=Gauche(pDate,8)
FIN
SI theDate="00000000" ALORS theDate=""
RENVOYER theDate
CAS cToSGBD
SELON gFmtDate
CAS "YYYY-MM-DD"
// transforme YYYYMMDD en YYYY-MM-DD
RENVOYER
"'"+Gauche(pDate,4)+"-"+Milieu(pDate,5,2)+"-"+Milieu(pDate,7,2)+"'"
CAS "YYYYMMDD"
// transforme YYYYMMDD en YYYYMMDD
RENVOYER Quote(pDate)
FIN
FIN
CAS Vrai
//Avec l'heure
SELON pConv
CAS cFromSGBD
SELON gFmtDateTime
CAS "YYYY-MM-DD HH:MM:SS"
// La date arrive sous forme YYYY-MM-DD HH:MM:SS et on la renvoie
sous forme YYYYMMDDHHMMSS
theDate= Gauche(pDate,4)+Milieu(pDate,6,2)+Milieu(pDate,9,2)+...
Milieu(pDate,12,2)+Milieu(pDate,15,2)+Milieu(pDate,18,2)
CAS "YYYYMMDD HH:MM:SS"
// La date arrive sous forme YYYY-MM-DD HH:MM:SS et on la renvoie
sous forme YYYYMMDDHHMMSS
theDate= Gauche(pDate,4)+Milieu(pDate,5,2)+Milieu(pDate,7,2)+...
Milieu(pDate,10,2)+Milieu(pDate,13,2)+Milieu(pDate,16,2)
CAS "YYYYMMDDHHMMSS"
// La date arrive sous forme YYYYMMDDHHMMSS et on la renvoie sous
forme YYYYMMDDHHMMSS
theDate=Gauche(pDate,14)
FIN
SI theDate="00000000000000" ALORS theDate=""
RENVOYER theDate
CAS cToSGBD
SELON gFmtDateTime
CAS "YYYY-MM-DD HH:MM:SS"
// transforme YYYYMMDDHHMMSS en YYYY-MM-DD HH:MM:SS
RENVOYER
"'"+Gauche(pDate,4)+"-"+Milieu(pDate,5,2)+"-"+Milieu(pDate,7,2)+...
+"
"+Milieu(pDate,9,2)+":"+Milieu(pDate,11,2)+":"+Milieu(pDate,13,2)+"'"
CAS "YYYYMMDDHHMMSS"
// transforme YYYYMMDDHHMMSS en YYYYMMDDHHMMSS
RENVOYER Quote(pDate)
FIN
FIN

FIN //Selon withTime


--
Eric
Webmaster des Wtablettes
www.wtablettes.net