Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Confronto fra due date

  1. #1

    Confronto fra due date

    Ciao a tutti ho questa urgenza devo fare un controllo tra due date, una è presa dal sistema mentre l'altra è la data di un evento con tipo di dato date...

    Quello che ho fatto sino ad'ora è quanto segue

    codice:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== 2010-07-08' at line 1  
    
    $data = date("y-m-d"); //Data del sistema
    $date = $a['event_start_date']; // Data del db
    
     //scompongo la data del db 
    $gg=substr($date,8,7); 
    $mm=substr($date,5,-3); 
    $aa=substr($date,0,-6);  
    
    //scompongo la data del sistema 
    $giorno=substr($data,6); 
    $mese=substr($data,3,2); 
    $anno=substr($data,0,-6); 
    
    //Rendo uniforme le date 
    $DataEvento="$aa-$mm-$gg"; 
    $DataConfronto="20$anno-$mese-$giorno"; 
    
    //Controllo con la query le due date  
    $sql="SELECT * FROM wp_dbem_events WHERE ".$date." == ".$DataConfronto." "; $result=mysql_query($sql) or die(mysql_error());
    Mi potete dire dove è l'errore? ... grazie

  2. #2
    La clausola WHERE della query deve contenere riferimenti ai nomi dei campi da confrontare...

  3. #3

    Re: Confronto fra due date

    Originariamente inviato da simone.marchese

    Mi potete dire dove è l'errore? ... grazie
    L'errore di sintassi e' nel doppio uguale == che non esiste in SQL.

    Ma la query non ha senso. se vuoi confrontare la data corrente con la data presente su db la via sara' di parecchio diversa.

    codice:
    //Controllo con la query le due date  
    $sql = "SELECT * 
            FROM wp_dbem_events 
            WHERE curdate() = event_start_date ";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    grazie per la risposta ma il problema sta nel formato delle date ovvero quella del db è nel formato 2010/07/08 mentre con date ottengo 10/07/08
    Quindi devo uniformare prima le due date e poi fare una ricerca

    Cmq alla fine era un errore di battitura per i due == e ci stavo perdendo un bel pò di tempo su una cavolata data da una distrazione....

  5. #5
    Genera due date nel formato aaaammgg e confronta i due interi tra di loro.

    Per es: 20100709 > 20100101

  6. #6
    Sono riuscito a fare il confronto fra le due date, l'errore stavo nel == dentro la clausola where piccole errore ...
    Ora ho un'altro problema nel codice noterete una distinct che ho dovuto inserire a causa del limit 10 ovvero se viene tolto il distinct ogni record viene ripetuto per 10 volte questo perchè tutta questa operezione è eseguita dentro un ciclo while?o per qualche altro strano motivo?
    Il ciclo while devo utilizzare per prendere i campi dal db utilizzando una query di ricerca sulla tabella.
    E subito dopo il seguente while ->while($a=mysql_fetch_array($result))

    codice:
    /*Prendo la data dal sistema
    $data = date("y-m-d"); 
    /*Prendo la data dal db
    $date = $a['event_start_date'];
    
    /*Scompongo la data del sistema 
    $gg=substr($date,8,7); 
    $mm=substr($date,5,-3); 
    $aa=substr($date,0,-6);  
    /*Scompongo la data del db 
    $giorno=substr($data,6); 
    $mese=substr($data,3,2); 
    $anno=substr($data,0,-6);  
    
    //metto la data del sistema nella seguente forma aaaa-mm-gg
    $DataEvento="$aa-$mm-$gg";
    //metto la data del db nella seguente forma aaaa-mm-gg
    $DataConfronto="20$anno-$mese-$giorno"; 
    
    //eseguo la query per confrontare le due date con un limite di 10 record
    //il campo DataEvento corrisponde a event_start_date
    $controllo="SELECT DISTINCT('".$DataConfronto."') FROM wp_dbem_events WHERE '".$DataEvento."' >= '".$DataConfronto."' LIMIT 10 ";

  7. #7
    scusa se insisto, ma stai facendo un giro del fumo assurdo:
    codice:
    /*Prendo la data dal sistema
    $data = date("y-m-d");
    /*Prendo la data dal db
    $date = $a['event_start_date'];
    
    /*Scompongo la data del sistema 
    $gg=substr($date,8,7); 
    $mm=substr($date,5,-3); 
    $aa=substr($date,0,-6);  
    
    /*Scompongo la data del db 
    $giorno=substr($data,6); 
    $mese=substr($data,3,2); 
    $anno=substr($data,0,-6);  
    
    //metto la data del sistema nella seguente forma aaaa-mm-gg
    $DataEvento="$aa-$mm-$gg";
    intanto fai un mixer tra la variabile del sistema e quella del db ($data = data sistema - $date = data del db e non viceversa) quando poi sarebbe sufficiente usare CURDATE() nella query.

    CURDATE() e' uguale a DATE('Y-m-d') ---> Y maiuscolo rende anno 2010

    La query e' poi assolutamente assurda:
    codice:
    $controllo="SELECT DISTINCT('".$DataConfronto."') 
          FROM wp_dbem_events 
          WHERE '".$DataEvento."' >= '".$DataConfronto."' 
          LIMIT 10 ";
    selezioni la stringa $DataConfronto a condizione che $DataEvento sia >= a $DataConfronto.

    Significa che la tabella wp_dbem_events non viene interessata ne punto ne poco dalla query.

    Ripeto la proposta della query che ti ho suggerito prima aggiungendo di eliminare tutto quel paciamme di codice che hai postato.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Ho inserito la query che mi hai consigliato e non viene visualizzato nemmeno un record... alla fine la mia sarà stata incasinata quanto vuoi ma almeno funzionava...

    La query che ho inserito è la seguente

    codice:
     
    $dataOdierna=curdate("Y-m-d");
    $date = $a['event_start_date'];
    
    $controllo="SELECT * FROM wp_dbem_events WHERE '".$dataOdierna."'  = '".$date."'  LIMIT 10 ";
    Ho sbagliato qualcosa?

  9. #9
    Originariamente inviato da simone.marchese
    Ho inserito la query che mi hai consigliato e non viene visualizzato nemmeno un record... alla fine la mia sarà stata incasinata quanto vuoi ma almeno funzionava...

    La query che ho inserito è la seguente

    codice:
     
    $dataOdierna=curdate("Y-m-d");
    $date = $a['event_start_date'];
    
    $controllo="SELECT * FROM wp_dbem_events WHERE '".$dataOdierna."'  = '".$date."'  LIMIT 10 ";
    Ho sbagliato qualcosa?
    certo che si .... prova cosi' che forse gli piacera' di piu':

    codice:
    $controllo = "SELECT * 
                   FROM wp_dbem_events 
                   WHERE CURDATE()  =  event_start_date 
                   LIMIT 10 ";
    cerca di comprendere bene questo codice che hai scritto:

    WHERE '".$dataOdierna."' = '".$date."'

    confronti due variabili che nulla hanno a che fare con la tabella. Nella tabella devi confrontare un valore (CURDATE() ) con il contenuto di un campo (event_start_date) in modo da estrarre i valori contenuti nel record.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Guarda che stiamo scrivendo la stessa cosa solo che io uso le variabili nella query mentre te utilizzi i valori direttamente nella query
    Infatti alle due variabili vengono assegnate i valori curdate e all'altra event_start_date

    Comunque mi dispiace ma non funziona ogni record viene fuori due volte e in più mi visualizza i record inferiori alla data odierna mentre io ho bisogno di visualizzare i record >= alla data odierna con un limite di 10 record...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.