Erreur conversion valeur datetime

Erreur conversion valeur datetime - SQL/NoSQL - Programmation

Marsh Posté le 16-04-2008 à 11:52:58    

Bonjour,
Je désire récupérer depuis une table appelé "journal", deux valeurs : le nombre total de lignes de la colonne "AlarmReference" et le nombre total de lignes de la colonne "DemandAcquitType" lorsque sa valeur est à TRUE.
Voici ma requête SQL :

Code :
  1. SELECT COUNT(*) AS AlarmReference, COUNT(*) AS DemandAcquitType FROM journal WHERE CreationTime>'10/04/2008 00:00:00' AND CreationTime<'11/04/2008 00:00:00'AND DemandAcquitType = '1'


Ma requête fonctionne et me retourne bien deux valeurs. Pour les récupérer, j'utilise le code PHP suivante :

Code :
  1. while ( odbc_fetch_row ( $ret)) {
  2.     $AlarmReference = odbc_result( $ret, "AlarmReference" );   
  3.     $DemandAcquitType = odbc_result( $ret, "DemandAcquitType" );
  4.     }


Jusqu'ici tout marche correctement. Je désires réaliser cette requête automatiquement tous les jours. J'ai donc remplacer dans ma requête l'heure par des variables :

Code :
  1. $dmy_aujourdui = date("d/m/Y" );                                               
  2. $date_aujourdui = "$dmy_aujourdui 00:00:00";                                 
  3. $dmy_hier = strftime("%d/%m/%Y", mktime(0, 0, 0, date('m'), date('d')-1, date('y'))) ;  /
  4. $date_hier = $dmy_hier." 00:00:00";


J'ai créer la variable date_aujourdui qui me renvoi la date d'aujourd'hui ' ex :10/04/2008 00:00:00 et la variable $date_hier qui me renvoi la date de hier. Je souhaite juste afficher la valeur de ma table de la veille et faire ceci tous les jours. Voici ma requete SQL :
 

Code :
  1. $sql = "SELECT COUNT(*) AS AlarmReference, COUNT(*) AS DemandAcquitType FROM journal where CreationTime>'$date_hier' and
  2. CreationTime<'$date_aujourdui' and DemandAcquitType = '1'";


Malheureusement, en exécutant ma page PHP, le programme ne fonctionne pas
Voici le code d'erreur :

Code :
  1. Warning: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaîne de caractères., SQL state 22008 IN SQLExecDirect IN c:\program files\


J'ai lu sur des forums qu'on pouvais peut etre utiliser la commande CONVERT(). J'ai essayer mais sa na pas marché.
Est ce que quelqu'un à une idée SVP?
Bonne journée


Message édité par goullater le 16-04-2008 à 11:54:23
Reply

Marsh Posté le 16-04-2008 à 11:52:58   

Reply

Marsh Posté le 16-04-2008 à 12:48:22    

Erreur classique du $toto entre apostrophes.
 
Remplacer

$sql = "SELECT COUNT(*) AS AlarmReference, COUNT(*) AS DemandAcquitType FROM journal where CreationTime>'$date_hier' and
CreationTime<'$date_aujourdui' and DemandAcquitType = '1'";


par

$sql = "SELECT COUNT(*) AS AlarmReference, COUNT(*) AS DemandAcquitType FROM journal where CreationTime>'".$date_hier."' and
CreationTime<'".$date_aujourdui."' and DemandAcquitType = '1'";

Reply

Marsh Posté le 16-04-2008 à 13:52:41    

Quel SGBD ?  
Pour récupérer la date d'hier, on peut utiliser sql,  
 
ex: en Oracle
=>
select monchampdate -1 days , sysdate - 1 days from matable
 
Note: sysdate mot reservé contient la current date ...


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 16-04-2008 à 17:03:50    

Salut,
 
Un conseil, dans des cas comme celui là, un "echo $sql;" fait gagner beaucoup de temps.

Reply

Sujets relatifs:

Leave a Replay

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