2016-12-16 6 views
0

нижеуказанному запрос возвращает нуль, но мой внутренний запрос выборки значения как shown hereMySQL время преобразования даты получает нулевое значение

SELECT CONCAT(
FLOOR(HOUR(time_milis)/24), ' ', 
MOD(HOUR(time_milis), 24), ':', 
MINUTE(time_milis),':', 
SECOND(time_milis)) 
FROM (
    SELECT SUM(TIMEDIFF(logout_timestamp,login_timestamp)) AS time_milis FROM t_access_log WHERE logout_timestamp!='0000-00-00 00:00:00' GROUP BY login_id 
)se 

, что я здесь отсутствует

+1

[ЧАС) (] (https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour) работает по времени не на integer – bansi

ответ

0

Ваш time_milis все секунды, но hour нужен time как '10:05:03', вы можете просто использовать sec_to_time. Как это:

SELECT concat(hour(sec_to_time(time_milis)), ' ', sec_to_time(time_milis)) 
FROM (
    SELECT SUM(TIMEDIFF(logout_timestamp,login_timestamp)) AS time_milis FROM t_access_log WHERE logout_timestamp!='0000-00-00 00:00:00' GROUP BY login_id 
)se 
1

Почему не использовать DATE_FORMAT() для этого ? Так что мое предположение было бы что-то вроде:

SELECT login_id , 
    DATE_FORMAT(
    SUM(
     TIMEDIFF(
      logout_timestamp,login_timestamp) 
     ) 
    ) as some_time 
FROM t_access_log 
WHERE logout_timestamp!='0000-00-00 00:00:00' 
GROUP BY login_id; 
+0

'DATE_FORMAT()' похоже, работает на 'date'? – Blank

Смежные вопросы