Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Confronto Tra Due Date Mysql

    Ciao Ragazzi,
    volevo chiedervi come potevo risolvere questo problema di confronto tra due date...
    Supponendo che la tabella si chiami X ed il campo DATETIME si chiami dataLimite, se voglio verificare che questa dataLimite(comprensiva di g/m/A m:s) sia maggiore della data corrente(comprensiva di g/m/A m:s) banalmente ho eseguito questa query:

    SELECT if(
    DATE_FORMAT(dataLimite, '%d/%m/%Y - %H:%i') >=
    DATE_FORMAT(now(), '%d/%m/%Y - %H:%i'),
    'true',
    'false')
    FROM

    Se la dataLimite ad esempio vale: 24/10/2011 - 15:10
    La data corrente vale: 25/09/2011 - 11:21

    Mi restituisce False, vedendo la dataLimite più piccola rispetto alla data corrente....
    Se per esempio metto

    Data Limite: 25/10/2011 - 15:10
    La data corrente vale: 25/09/2011 - 11:21
    Restituisce true ....

    Come se confrontasse solo il giorno ...

    Non so come uscirmene, vi chiedo aiuto ragazzi....

    Grazie,
    Tommy

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se usi la funzione date_format() finisci col confrontare delle stringhe, non delle date.

    Molto banalmente

    codice:
    select '2011-09-25 12:00:00' > now() -- 1
    
    select '2011-09-25 11:00:00' > now() -- 0

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    triplici errori logici
    Il primo: se vuoi confrontare due date puoi
    1) convertirle in tempo UNIX (fino al 2038)
    2) usare una funzione "apposita" ("intelligente" con le ").
    Qui ne trovi quante ne vuoi http://dev.mysql.com/doc/refman/5.5/...functions.html

    3) usare un ordinamento lessicografico, ma ovviamente al contrario di quello che hai messo.
    anno-mese-giorno-ora-minuti-secondi

    4) per inciso se i campi data sono omogenei... basta <, > o =, mysql lo capisce

  4. #4
    Grazie Mille!!!!!

    Hai perfettamente ragione ...

    Però se volessi controllare la data fino ai minuti e non fino ai secondi come accade facendo in questo modo, come dovrei fare?


    Grazie,
    Tommaso.
    --

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Come ti ha scritto franzauker devi confrontarle seguendo quell'ordine


    codice:
    select date_format('2011-09-25 12:13:20','%Y-%m-%d %H:%i') > date_format(now(),'%Y-%m-%d %H:%i')

  6. #6
    Eh si ....

    Grazie per l'aiuto ragazzi...

    Tommaso

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.