Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema con TIME

  1. #1

    Problema con TIME

    Ciao a tutti,
    ho un problema con il campo TIME.

    Vorrei visualizzare con una query tutti gli eventi che sono maggiori della data e dell'ora corrente.
    Nel DB ho i due campi :
    - data di tipo date con formato 2011-08-02
    - ora di tipo time con formato 21:00:00

    Se faccio la query solo sul campo data funziona ma se inserisco anche il campo ora non mi viene fuori niente.

    Questa è la query. Ovviamente contiene anche altri controlli.

    Codice PHP:
    $Risultato=mysql_query("SELECT partite.id_partita, partite.data, partite.ora, partite.organizzatore, partite.squadra_a, partite.squadra_b, partite.risultato, partite.campo, partite_calciatori.id_partita, partite_calciatori.utente FROM partite, partite_calciatori WHERE partite.id_partita = partite_calciatori.id_partita AND partite_calciatori.utente = '$user' AND partite.data <= CURDATE() AND partite.ora < CURTIME() ORDER BY partite.data DESC"$db); 
    Grazie in anticipo!

  2. #2
    Sei sicuro che la query dovrebbe tirare fuori qualche risultato? Il fatto è che le condizioni, essendo in AND devono essere TUTTE verificate, quindi se hai un record che ad esempio contiene una data antecedente ad oggi, ma con un orario seguente a quello in cui effettui la query allora esso non rispetta la condizione.
    Non so esattamente cosa tu voglia ottenere, ma non sarebbe più comodo e probabilmente corretto utilizzare un campo datetime piuttosto che due campi separati per la data e l'orario?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Vorrei che mi venissero fuori tutte le partite di calcio giocate.
    Ho un calendario diviso in due pagine diverse : una per le partite giocate (Quindi tutte quelle che hanno superato la data e l'ora attuale.) e l'altro con le partite da giocare.

    Facciamo un esempio :

    Se ho una partita che contiene i due campi data di tipi date (2011-09-01) ora di tipo time (21:00:00) la partita non deve essere visualizzata perchè non è stata ancora giocata.

    Se ho una partita che contiene i due campi data di tipi date (2011-08-28) ora di tipo time (21:00:00) la partita deve essere visualizzata perchè è stata giocata.

    Questa cosa non è fattibile usando il campo time?

  4. #4
    Originariamente inviato da marcopanico
    Vorrei che mi venissero fuori tutte le partite di calcio giocate.
    Ho un calendario diviso in due pagine diverse : una per le partite giocate (Quindi tutte quelle che hanno superato la data e l'ora attuale.) e l'altro con le partite da giocare.

    Facciamo un esempio :

    Se ho una partita che contiene i due campi data di tipi date (2011-09-01) ora di tipo time (21:00:00) la partita non deve essere visualizzata perchè non è stata ancora giocata.

    Se ho una partita che contiene i due campi data di tipi date (2011-08-28) ora di tipo time (21:00:00) la partita deve essere visualizzata perchè è stata giocata.

    Questa cosa non è fattibile usando il campo time?
    Il problema è che così com'è la query nel caso: 2011-08-28 21:00:00 se esegui la query ad esempio il giorno 2011-09-10 alle ore 11:30:00 la partita in questione non viene trovata in quanto è vera la condizione riguardante la data data_partita <= data_odierna ma falsa la condizione sul tempo in quanto tempo_partita > tempo_attuale.

    (...AND partite.data <= CURDATE() AND partite.ora < CURTIME()...)

    Se vuoi lasciare i campi data e tempo separati (cosa comunque assolutamente errata secondo me) allora devi cambiare le condizionei nella query.

    Prova così:

    codice:
    ... WHERE partite.id_partita = partite_calciatori.id_partita AND partite_calciatori.utente = '$user' AND (partite.data < CURDATE() OR (partite.data = CURDATE() AND partite.ora < CURTIME())) ORDER BY partite.data DESC
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Grazie ho capito.
    Pensavo che era meglio dividere i campi.
    Quindi mi consigli di fare un unico campo di tipo datetime!
    A quel punto confronto il campo datetime con CURDATE e CURTIME?

    Grazie ancora!

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.