Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354

    [MySql]SELECT dove un TIMESTAMP deve essere minore della data attuale

    Salve,

    Mi serve di fare una query che mi restituisca tutte le tuple in cui un campo time_end, di tipo TIMESTAMP, sia minore o uguale alla data odierna.

    Io avrei fatto:
    codice:
    SELECT id, time_end
    FROM message
    WHERE time_end < now( )
    Che non restituisce nessuna tupla, mentre se camio il < in un > il database le restituisce tutte.

    Qualcuno saprebbe aiutarmi?

  2. #2
    potrebbe dipendere dal formato del campo usato dal tuo timestamp

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

  3. #3
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Spiegati meglio, che cosa intendi? La tabella è popolata e i campi sono pieni con campi che sono precedenti e successivi alla data odierna. Come dovrei fare? non ci sono altre funzioni da usare al posto di now() e se scrivo la stringa da php nello stesso formato il risultato è lo stesso.

  4. #4
    Originariamente inviato da unit1
    Spiegati meglio, che cosa intendi? La tabella è popolata e i campi sono pieni con campi che sono precedenti e successivi alla data odierna. Come dovrei fare? non ci sono altre funzioni da usare al posto di now() e se scrivo la stringa da php nello stesso formato il risultato è lo stesso.
    il timestamp puo' essere di due tipi: unix oppure nativo mysql nel formato ansi. Se non e' nello stesso formato avresti risultati inattesi.

    Pero' anche, potrei immaginare che se hai un time_end ci sia pure un campo time_start. In questo caso invece potrebbe essere che le scadenze sono tutte posteriori a now() e quindi funziona con maggiore di > e non con minore <

    non c'entra il linguaggio usato. Anche in aramaico antico maggiore e minore danno lo stesso risultato logico.

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

  5. #5
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Ho messo la funzione che trasforma time_end in standard unix, ma nulla. Come faccio a sapere che tipo di data si tratta? Io generalmente preferisco lavorare su server Linux

  6. #6
    Originariamente inviato da unit1
    Ho messo la funzione che trasforma time_end in standard unix, ma nulla. Come faccio a sapere che tipo di data si tratta? Io generalmente preferisco lavorare su server Linux
    basta fare un select * e vedi cosa ti stampa

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

  7. #7
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    codice:
    mysql> select * from message;
    +----+---------------------+---------------------+--------+-----------------+-----------------------------------+
    | id | time_insert         | time_end            | text   | email           | password                          |
    +----+---------------------+---------------------+--------+-----------------+-----------------------------------+
    |  7 | 2013-01-17 14:25:00 | 2015-05-07 11:12:55 | testo2 | admin@email.com | 472b8a337af7f28c52364d63c806ed5b8 |
    |  6 | 2013-01-15 23:55:59 | 2013-01-22 00:55:43 | testo  | admin@email.it  | 472b8a337af7f28c52364d63c806ed5b8 |
    +----+---------------------+---------------------+--------+-----------------+-----------------------------------+
    2 rows in set (0.00 sec)
    Ne ho messa una precedente e una successiva alla data odierna, il formato dovrebbe essere stile unix.

  8. #8
    Originariamente inviato da unit1
    Ne ho messa una precedente e una successiva alla data odierna, il formato dovrebbe essere stile unix.
    questo formato di datetime e' ANSI. Il formato UNIX e' numerico.

    Potrebbe dipendere dal tipo di campo usato. Se il campo e' in formato DATETIME allora funziona la seguente ricerca:

    campo_datetime < NOW() = data minore di ADESSO cioe' NOW() e per te il campo time_insert
    campo_datetime > NOW() = data maggiore di ADESSO cioe' NOW() e per te il campo time_end

    ma se pero' il campo fosse in formato varchar allora verrebbe applicata la comparazione ascii e non il valore del formato della data.

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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.