|
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, 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 |
| |
| |
| | | |
|
| | | | |
| | |
|