2012-06-07 6 views
10

Я пытаюсь получить разницу во времени между 2 пользователями, мне нужна разница в часах.Как получить разницу во времени (в часах) между 2 датами

Я попытался использовать функцию DATEDIFF, но это неправильно.

Вот мой код:

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

Что вы имеете в виду "* разница во времени между 2 пользователей *"? Вы имеете в виду их часовые пояса? Или что-то другое? Вы говорите, что ваш существующий код «* wrong *», но не говорите, что с ним не так. Мы должны догадаться? (Я предполагаю, что функция '' DATEDIFF() '] (http://dev.mysql.com/doc/en/date-and-time-functions.html#function_datediff) возвращает разницу в * days *, а не * hours *; и принимает только два аргумента, а не три, но это то, что * все * это неправильно?). – eggyal

+0

, если u.1 был создан 2 дня назад, а u.2 был создан вчера, тогда разница составляет 24 часа, например – Ofer

+0

Непонятно. Добавьте дополнительную информацию. – Devart

ответ

3

В вашем заявлении на выбор должно быть предложение from. Что-то вроде

Select date1 - date2 from dual 

возвращает количество дней между date1 и date2.

Если вы хотите количество часов:

Select (date1 - date2)*24 from dual; 

(это только для оракула)

+0

Какой блок вы получили ответ? – Ofer

+0

Я не понимаю ваш вопрос, но если вы спрашиваете о типе результата, результатом является число с плавающей запятой, которое представляет количество дней в первом запросе и количество часов во втором. Например, 0,5 дня означает 12 часов. другой пример: 0,2 часа = 0,2 * 60 минут = 12 минут –

+0

Если разность дат равна нулю, тогда что произойдет? как можно получить час? – Sadikhasan

14

От MySQL DATEDIFF docs:

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

Вы хотите посмотреть на TIMEDIFF

Это даст вам количество часов в разнице во времена (если ваши поля time_c DATETIME или что-то подобное)

SELECT HOUR(TIMEDIFF( 
    (SELECT max(u1.time_c) FROM users u), 
    (SELECT max(u2.time_c) FROM users u2) 
)) 
Смежные вопросы