2012-06-07 7 views
10

Sto cercando di ottenere la differenza di tempo tra 2 utenti, ho bisogno della differenza in ore.Come ottenere la differenza di orario (in ore) tra 2 date

Ho provato a utilizzare la funzione DATEDIFF ma è sbagliato.

Ecco il mio codice:

SELECT DATEDIFF(*, 
(SELECT max(u1.time_c) 
FROM users u) 
, 
(SELECT max(u2.time_c) 
FROM users u2) 
+2

Cosa vuol dire "* la differenza di tempo tra 2 utenti *"? Ti riferisci ai loro fusi orari? O qualcos'altro? Dici che il tuo codice esistente è "* errato *" ma non dire cosa c'è che non va. Dovremmo indovinare? (La mia ipotesi sarebbe che la funzione ['DATEDIFF()'] (http://dev.mysql.com/doc/en/date-and-time-functions.html#function_datediff) restituisce una differenza in * giorni *, non * ore * e accetta solo due argomenti, non tre - ma è tutto * tutto * sbagliato?). – eggyal

+0

se u.1 è stato creato 2 giorni fa e u.2 è stato creato ieri quindi la differenza è 24 ore ad esempio – Ofer

+0

Non chiaro. Aggiungere ulteriori informazioni – Devart

risposta

3

È necessario avere una clausola from nell'istruzione select. Qualcosa come

Select date1 - date2 from dual 

restituisce il numero di giorni tra data1 e data2.

Se volete numero di ore:

Select (date1 - date2)*24 from dual; 

(questo è solo per Oracle)

+0

Quale unità si riceve la risposta? – Ofer

+0

Non capisco la tua domanda, ma se chiedi del tipo di risultato, il risultato è un numero in virgola mobile, che rappresenta il numero di giorni nella prima query e il numero di ore nel secondo. Ad esempio, 0,5 giorni significa 12 ore. un altro esempio: 0,2 ore = 0,2 * 60 minuti = 12 minuti –

+0

Se la differenza di data è zero, allora cosa succede? come può arrivare ora? – Sadikhasan

14

Da MySQL DATEDIFF docs:

Only the date parts of the values are used in the calculation. 

Hai voglia di guardare TIMEDIFF

Questo vi darà il numero di ore nella differenza nei tempi (supponendo che i tuoi campi time_c siano DATETIME o qualcosa di simile)

SELECT HOUR(TIMEDIFF( 
    (SELECT max(u1.time_c) FROM users u), 
    (SELECT max(u2.time_c) FROM users u2) 
)) 
Problemi correlati