Calcolare Scadenze del campo Date, Come?

Ho una tabella con delle date,

io vorrei fare un Select in cui mi deve calcolare le scadenze (quanto manca) del giorno in corso.

Si può fare in Sql? Se si, Come?

inviato 10 anni fa
dantefoxfox
X 0 X

MySQL ha diverse funzioni per la manipolazione ed il trattamento delle date. Se hai MySQL 4.1 potresti provare con:

SELECT DATEDIFF(data_scadenza, CURDATE())

ma ti consiglio di quardare tutte le funzioni disponibili per cercare quella che fa al caso tuo:

http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie per la risposta repentina :)

Ma il comando date = now() lo devo mettere? oppure è una cavolata che mi sono inventato io? :idiot:

$ric = "SELECT l.id AS id, l.uid, l.exchange AS amt, l.date AS date, u.uid, u.login AS login 
FROM lines l, users u 
WHERE l.uid=u.uid AND l.pmt_type='e' AND date=now() 
ORDER BY DATEDIFF(l.date, CURDATE()) asc";

Così da avere alla prima riga quella che scade prima.

E' giusta?

p.s. ho una data di questo formato 2006-03-17 22:03:09

risposto 10 anni fa
dantefoxfox
X 0 X
$ric = "SELECT l.id AS id, l.uid, l.exchange AS amt, l.date AS date, u.uid, u.login AS login 
FROM lines l, users u 
WHERE l.uid=u.uid AND l.pmt_type='e' AND date=now() 
ORDER BY DATEDIFF(l.date, CURDATE()) asc";

Ho letto, e sto leggendo approfonditamente la pagina che mi hai postato, ed vedo che facendo quello che mi dici te, alla fine mi viene data una lista di soli dati temporali, io vorrei anche avere i relativi dati. Si può fare?

Mi spiego meglio, io ho una tabella di 8 colonne in cui nell'ultima c'è date(=la scadenza) la vorrei sostituire con il tempo che manca in giorni, ore e minuti, ed infine la tabella deve essere messa, logicamente, in ordine con le varie scadenze.

Ho trovato questo, ma non ci capisco tanto, me lo potresti spiegare? Dove posso mettere la varie variabili?

SELECT CONCAT(DAYOFYEAR(date1)-DAYOFYEAR(NOW()),' days ', DATE_FORMAT(ADDTIME("2000-00-00 00:00:00",SEC_TO_TIME(TIME_TO_SEC(date1)-TIME_TO_SEC(NOW()))),'%k hours and %i minutes')) AS time FROM time_table;

Ciao e grazie :bye:

risposto 10 anni fa
dantefoxfox
modificato 10 anni fa
X 0 X

Potresti nell'SQL trasformare la data in un timestamp, sottrargli poi il timestamp corrente e quindi trasformare, in PHP, il risultato in giorni-ore-minuti secondi. Le funzioni per fare queste conversioni le trovi nel link che ti ho postato prima.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni, allora facendo questo:

SELECT CONCAT(DAYOFYEAR(date1)-DAYOFYEAR(NOW()),' days ', DATE_FORMAT(ADDTIME("2000-00-00 00:00:00",SEC_TO_TIME(TIME_TO_SEC(date1)-TIME_TO_SEC(NOW()))),'%k hours and %i minutes')) AS time FROM time_table;

Mi calcola il tempo che rimane, solo che combina un problema, e cioè quando per esempio sono le 23 e la scadenza è per le due di notte mi dice che rimangono 1 giorno e tre ore, invece che solo tre ore.

Come posso fare perchè mi dia solo le ore ed i minuti ?

risposto 10 anni fa
dantefoxfox
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda