Confronto tra due date

  • Creatore Discussione Creatore Discussione carter
  • Data di inizio Data di inizio

carter

Utente Attivo
15 Feb 2012
68
0
0
Ciao a tutti, sono nuovissimo qui...questo è il mio primo messaggio...
vi chiederei subito una cosa...
devo modificare una query che effettua l'update di un campo di una tabella in base a determinate condizioni...
UPDATE tab1 INNER JOIN tab2 ON tab1.id=tab2.id SET tab1.scaduto='Y'
WHERE ((tab2.type='pinco') AND (DATA + INTERVAL 24 HOUR < NOW()))

dove DATA (di tipo datetime) dovrebbe essere la maggiore tra tab1.data e tab2.data

sapete se c'è un modo per mettere questa condizione nella query senza fare altro? (ovvero se c'è qualche funziona nativa di mysql che calcola la maggiore (o più recente) fra due date)

Grazie a tutti e scusatemi se mi presento subito con una richiesta
 
grazie alessandro per la risposta...
non vorrei cadere in errore ma MAX non accetta campi "datetime"
 
Stavo per partorire un idea ma devo chiudere

ti posto fin dove sono arrivato

Codice:
SELECT IF(TIMEDIFF('2012-02-16 18:00:00', '2012-02-16 19:00:00')> 0,'tab1.data','tab2.data')

restituisce la data maggiore

ma non sono arrivato ad apllicarla al tuo caso

forse sono sulla strada sbagliata ma intanto la salvo qui

ciao
 
non so perchè io dovrei fare un confronto dopo l'AND della clausola WHERE...dove prendo in considerazione la DATA
 
si era quello che avevo in mente di fare

pensavo ad una query simile:

metto select per le prove ma puo benissimo diventare UPDATE

Codice:
SELECT * FROM tab1 T1
JOIN tab2 T2 ON T1.id = T2.id
WHERE campo = 'pippo' &&
(IF(TIMEDIFF('T1.data', 'T2.data')> 0,'T1.data','T2.data')+ INTERVAL 24 HOUR < NOW())

è solo un idea da testare
 
Ultima modifica:
grazie a tutti per l'interessamento ragazzi...
provo e vi faccio sapere...
comunque visto che non sono esperto di altri db...
la query dovrebbe girare con db mysql e php
 
a una prova TIMEDIFF sembra proprio essere la funzione che ci voleva...
ora vado a nanna ma domani provo meglio...
comunque sia vi ringrazio molto ragazzi...siete stati gentilissimi
 
un'ultima cosa...
se dovesse interessare a qualcuno...
tutto quello che è inserito nella funzione TIMEDIFF va scritto senza apici...
(parlo sempre di db mysql)
 
Si senza apici sembrerebbe funzionare

Codice:
SELECT *
FROM tab1 T1
JOIN tab2 T2 ON T1.id = T2.id
WHERE (
IF( TIMEDIFF( T1.data, T2.data ) >0, T1.data, T2.data ) + INTERVAL 24 HOUR < NOW()
)
 
si perchè con gli apici non esegue nulla...
anche perchè se non erro gli apici vanno messi alle variabili in mysql...
comunque grazie mille...
testerò per bene la cosa e ti farò sapere sei stato molto gentile...
 
E se ti salvassi il timestamp al posto della data?
Alla fine sono dei semplici numeri (da cui ti puoi ricavare la data effettiva) che ti permettono di eseguire le operazioni con più semplicità.
 
Longo8 ho risolto con la funzione timediff...
e comunque le date non devo salvarmele...ce le ho già nel db...
 
Longo8 ho risolto con la funzione timediff...
e comunque le date non devo salvarmele...ce le ho già nel db...
Ma infatti io intendevo salvare direttamente il timestamp nel db.
Se già hai risolto, come hai detto, ignora la mia risposta ;)
 

Discussioni simili