2013-05-15 4 views
1

Я работаю над запросом MySQL, чтобы возвращать некоторые конкретные результаты. Я очень близок. Теперь мне нужно рассчитать TIMEDIFF между двумя столбцами. Вот мой текущий запрос:потянув timediff из созданных столбцов в mysql

SELECT DATE_FORMAT(PunchDateTime, '%W') DAY, MAX(CASE WHEN PunchEvent = 'ClockIn' THEN DATE_FORMAT(PunchDateTime, '%r') END) AS 'Clock In', MAX(CASE WHEN PunchEvent = 'BreakOut' THEN 
    DATE_FORMAT(PunchDateTime, '%r') END) AS 'Break Out', MAX(CASE WHEN PunchEvent = 'BreakIn' THEN DATE_FORMAT(PunchDateTime, '%r') END) 'Break In', MAX(CASE WHEN PunchEvent = 'ClockOut' THEN 
    DATE_FORMAT(PunchDateTime, '%r') END) 'Clock Out', TIMEDIFF('Clock In', 'Break Out') AS Total FROM timeclock_punchlog WHERE EmpID = 456 GROUP BY 
    DATE_FORMAT(PunchDateTime, '%W') ORDER BY PunchDateTime; 

Теперь, общее количество показывается 00:00:00. Любые идеи, как я могу это сделать? Thanks Mike

ответ

0

После долгих поисков и рутинга я понял это. Я узнал, что вы не можете использовать псевдонимы, созданные ранее в запросе, в функции TIMEDIFF. Я в основном должен был использовать всю формулу, которую я использовал для создания псевдонима вместо псевдонима в функции TIMEDIFF. Вот мой запрос:

SELECT DATE_FORMAT(PunchDateTime, '%W') DAY, MAX(CASE WHEN PunchEvent = 'ClockIn' THEN DATE_FORMAT(PunchDateTime, '%T') END) AS 'Clock In', MAX(CASE WHEN PunchEvent = 'BreakOut' THEN DATE_FORMAT(PunchDateTime, '%T') END) AS 'Break Out', MAX(CASE WHEN PunchEvent = 'BreakIn' THEN DATE_FORMAT(PunchDateTime, '%T') END) 'Break In', MAX(CASE WHEN PunchEvent = 'ClockOut' THEN DATE_FORMAT(PunchDateTime, '%T') END) 'Clock Out', (TIMEDIFF(MAX(CASE WHEN PunchEvent = 'clockout' THEN DATE_FORMAT(PunchDateTime, '%T') END), MAX(CASE WHEN PunchEvent = 'breakin' THEN DATE_FORMAT(PunchDateTime, '%T') END))) AS Total FROM timeclock_punchlog WHERE EmpID = 456 GROUP BY DATE_FORMAT(PunchDateTime, '%W') ORDER BY PunchDateTime; 

мне также пришлось изменить% г к% T, так что бы вычислить TimeDiff правильно Основой военного времени вместо стандартного времени AM/PM. Надеюсь, это поможет кому-то! Mike

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