PHP + ODBC access => Format DATETIME

PHP + ODBC access => Format DATETIME - PHP - Programmation

Marsh Posté le 04-02-2005 à 13:46:16    

Voilà, j'ai un probleme pour interroger ODBC sur un champ datetime. Le driver ODBC est bien installé pour la base de donnée Access que j'interroge et j'arrive à me connecter et à exectuer mes requetes SQL sans probleme.
Par contre impossible d'interroger la bd sur un datetime, apparement je n'utilise pas le bon format mais je n'ai aucune idée du format à utiliser. J'ai bien regardé sur les msdn et tenté avec les formats définis de ce coté mais rien à faire.

Code :
  1. $cur=odbc_exec($con,"SELECT PlanDate, \"Company ID\" FROM \"T Planning\" WHERE PlanDate='2005-01-25 00:00:00'" );


 
Voici les erreurs que j'obtiens:  

Citation :

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression., SQL state 22005 in SQLExecDirect in d:\documents and settings\jcregins\desktop\weblocal\planning\affichage.php on line 18
 
Warning: odbc_result_all(): supplied argument is not a valid ODBC result resource in d:\documents and settings\jcregins\desktop\weblocal\planning\affichage.php on line 19


 
Peut etre que quelqu'un s'est déjà posé cette question, merci ^^

Reply

Marsh Posté le 04-02-2005 à 13:46:16   

Reply

Marsh Posté le 04-02-2005 à 14:06:47    

T'as essayé de formatter la date ? (DATE_FORMAT ?)


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 04-02-2005 à 14:30:51    

boulax a écrit :

T'as essayé de formatter la date ? (DATE_FORMAT ?)


 
Je ne connaissais pas du tout la fonction DATE_FORMAT() en SQL maintenant dans mon cas je ne vois pas trop comment je pourrais m'en servir. Peut etre ceci ?
 

Citation :

$cur=odbc_exec($con,"SELECT PlanDate, \"Company ID\" FROM \"T Planning\" WHERE PlanDate=DATE_FORMAT(\"2005-01-25\", \"%Y-%m-%d\"" )

Reply

Marsh Posté le 04-02-2005 à 14:31:46    

Non, c'est ton champs date que tu dois formater, et ce de la meme facon que la chaine à laquelle tu le compares.


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 04-02-2005 à 14:34:31    

Code :
  1. $cur=odbc_exec($con,"SELECT PlanDate, \"Company ID\" FROM \"T Planning\" WHERE PlanDate=DATE_FORMAT(\"2005-01-25\", \"%Y-%m-%d\" )" );


 

Citation :

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'DATE_FORMAT' in expression., SQL state 37000 in SQLExecDirect in d:\documents and settings\jcregins\desktop\weblocal\planning\affichage.php on line 18


 
Voilà, apparement il ne connait pas DATE_FORMAT()

Reply

Marsh Posté le 04-02-2005 à 14:35:48    

Ouais bon, date_format c'est une fonction MySQL.. maintenant tu devrais consulter la doc de ton SGBD et voir les fonctions de traitements des dates qui sont disponibles...


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 04-02-2005 à 14:36:00    

boulax a écrit :

Non, c'est ton champs date que tu dois formater, et ce de la meme facon que la chaine à laquelle tu le compares.


 
Je vais tenter tout de suite, mais comme il ne connait pas la fonction ca m'étonnerais que ca fonctionne.

Reply

Marsh Posté le 04-02-2005 à 14:36:54    

boulax a écrit :

Ouais bon, date_format c'est une fonction MySQL.. maintenant tu devrais consulter la doc de ton SGBD et voir les fonctions de traitements des dates qui sont disponibles...


 
lol, toujours une longueur de retard moi ;) C'est ODBC qui n'accepte pas cette fonction il me semble.

Reply

Marsh Posté le 04-02-2005 à 14:38:28    

petitpata a écrit :

lol, toujours une longueur de retard moi ;) C'est ODBC qui n'accepte pas cette fonction il me semble.


 
ODBC n'est qu'un driver. Il te renvoi une erreur fournie par Access... donc zieute la doc Access pour connaitre les fonctions de traitement (comparaison?) de dates..


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 04-02-2005 à 16:18:15    

boulax a écrit :

ODBC n'est qu'un driver. Il te renvoi une erreur fournie par Access... donc zieute la doc Access pour connaitre les fonctions de traitement (comparaison?) de dates..


 
Merci de ton aide !
 
Donc après quelques recherches sur le fonctionnement d'access, je me retrouve avec une requete qui devrait fonctionner, sauf que le serveur php me retourne toujours une erreur, je subodore une erreur de synthax.

Code :
  1. $requete='SELECT Format(PlanDate,"yyyy/mm/dd" ) AS Expr1 FROM "T Planning" WHERE (((Format(PlanDate,"yyyy/mm/dd" ))="2003/02/03" ))';
  2. $cur=odbc_exec($con,$requete);


Citation :

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2., SQL state 07001 in SQLExecDirect in d:\documents and settings\jcregins\desktop\weblocal\planning\affichage.php on line 19

Reply

Marsh Posté le 04-02-2005 à 16:18:15   

Reply

Marsh Posté le 04-02-2005 à 17:27:12    

Code :
  1. SELECT Format([plandate],"yyyy/mm/dd" ) AS Expr1,[Company ID]
  2. FROM [T Planning]
  3. WHERE (((Format([plandate],"yyyy/mm/dd" ))="2003/02/03" ));


 
Voici la requete produite par access lui même. Il semblerait que le driver ODBC ne veuille pas de ce truc ... je parle d'ODBC puisque cette requete fonctionne très bien dans Access.
 
J'ai essayé de cette facon aussi :

Code :
  1. $requete="SELECT Format(TPlanning.plandate,\"yyyy/mm/dd\" ) AS Expr1, TPlanning.CompanyID FROM TPlanning WHERE (((Format(TPlanning.plandate,\"yyyy/mm/dd\" ))=#2003/02/03#))";


Mais ca ne fonctionne pas mieux, j'ai systématiquement la même erreur:

Citation :

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1., SQL state 07001 in SQLExecDirect in d:\documents and settings\jcregins\desktop\weblocal\planning\affichage.php on line 19


Quelqu'un a une idée ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed