這個論壇的新手,但希望有人可以提供幫助。MYSQL - 當特定列被觸發時求和時間差
我使用的有3列我期待使用一個表:
LOGOFF_REASON
START_TIME
END_TIME
我希望得到持續時間START_TIME之間& END_TIME(最好在幾秒鐘,但在任何形式將罰款)當一個特定的原因代碼填充在LOGOFF_REASON - 例如'午餐'。
我試過幾種方法,但得到一些奇怪的結果,所以想知道如果任何人可以添加一些援助。
結果如何看一個表:
這個論壇的新手,但希望有人可以提供幫助。MYSQL - 當特定列被觸發時求和時間差
我使用的有3列我期待使用一個表:
LOGOFF_REASON
START_TIME
END_TIME
我希望得到持續時間START_TIME之間& END_TIME(最好在幾秒鐘,但在任何形式將罰款)當一個特定的原因代碼填充在LOGOFF_REASON - 例如'午餐'。
我試過幾種方法,但得到一些奇怪的結果,所以想知道如果任何人可以添加一些援助。
結果如何看一個表:
試試這個:
SELECT TIME_TO_SEC(TIMEDIFF(END_TIME, START_TIME))
FROM TABLENAME
WHERE LOGOFF_REASON = 'Lunch' ;
UPDATE
按照你的意見,你可以試試這個:
SELECT SUM(TIME_TO_SEC(TIMEDIFF(END_TIME, START_TIME)))
FROM TABLENAME
WHERE LOGOFF_REASON = 'Lunch' ;
希望這完全滿足您的需求。
更新2
下面將爲你的累計時間爲每個理由:
SELECT LOGOFF_REASON , SUM(TIME_TO_SEC(TIMEDIFF(END_TIME, START_TIME)))
FROM TABLENAME
GROUP BY LOGOFF_REASON ;
謝謝FDavidov,我應該說已經有一個where子句的加載和select部分需要sumif 正在使用這個,但我肯定會有更好的方式做到這一點 sum(if(sessions.logoff_reason ='Lunch',time_to_sec(timediff(if(sessions.end_time <>'0000-00-00 00:00:00',sessions.end_time,NOW()),sessions.start_time )),NULL))AS午餐, –
再次感謝。 我真正需要做的是把它作爲一個總和(如果因爲除了「午餐」之外還有大約10種不同的狀態,所以不能在那裏使用它,因爲它會忽略其他狀態 –
好吧。更新我的答案,敬請期待... – FDavidov
檢查http://stackoverflow.com/questions/3528219/mysql-how-to-get -the-difference-between-two-timestamps-in-seconds – AlecTMH