2009-09-22 14 views

risposta

9

Cosa succede ad usare datediff:

mysql> select abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00')); 
+-------------------------------------------------------------+ 
| abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00')) | 
+-------------------------------------------------------------+ 
|               29 | 
+-------------------------------------------------------------+ 
1 row in set (0.00 sec) 

Citando il manuale:

DATEDIFF() rendimenti expr1 – expr2 espresso come un valore in giorni da una data all'altro. expr1 ed expr2 sono espressioni di data o ora.
Solo le parti della data dei valori sono utilizzate nel calcolo.

1

si può semplicemente sottrarre datetimes e restituirà il valore:

selezionare (ora() - intervallo 2 giorno) - (ora() - intervallo 5 giorni);

Il risultato non è un datetime (è un po 'di decimale data in codice - 3000000 per tre giorni in questo caso), ma non è corretto dire considerare un datetime e un intervallo come lo stesso tipo di dati.

1

Oppure utilizzare TIMESTAMPDIFF() in questo modo:

TIMESTAMPDIFF (microsecondi, yourtime, ora())

il primo parametro è l'unità mysql datetime, può essere "microsecondo, secondo , minuto, ora, giorno, anno "e questa funzione indica il terzo parametro datetime meno il secondo parametro datetime.

mysql> select timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00"); 
+---------------------------------------------------------------------+ 
| timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00") | 
+---------------------------------------------------------------------+ 
|                2505600 | 
+---------------------------------------------------------------------+ 
1 row in set (0.00 sec)