我有一個應用程序記錄登錄和註銷datetimestamps到mysql數據庫。每個用戶登錄和註銷都是一行。我需要創建一個報告,以小時和分鐘顯示每個用戶登錄的分鐘數。我可以通過在兩個時間戳之間使用TIMESTAMPDIFF,然後按小時在其中一個時間戳上進行分組來找出如何執行此操作。但我不知道如何在登錄時間爲11:53時登出,登出時間爲13:06。在哪裏應該顯示11分鐘7分鐘,12分鐘60分鐘,13分鐘6分鐘。相反,我現在的做法是在第11小時顯示73分鐘(如果按登錄時間分組)。Mysql - 獲取每小時的分鐘數,當開始和結束時間在不同的小時
回答
如果您創建的另一個表格只需要將所有小時數作爲時間戳報告,那麼最簡單。之所以這樣說,表是hourlist和其中的時間戳列是小時
那麼你一定要這樣的查詢:
select hour, userid,
case
when login < hour and logout >= ADDTIME(hour,'1:00:00.0') then '1:00:00.0'
when login >= hour and logout < ADDTIME(hour, '1:00:00.0')then TIMEDIFF(logout, login)
when login >= hour and logout > ADDTIME(hour, '1:00:00.0') then TIMEDIFF(ADDTIME(hour, '1:00:00.0'), login)
when login < hour and logout < ADDTIME(hour, '1:00:00.0') then TIMEDIFF(logout, hour)
else '00:00:00.0'
end case
from hourlist join loginlogout
on (login >= hour and login < ADDTIME(hour,'1:00:00.0')) or (logout >= hour
and logout < ADDTIME(hour,ADDTIME(hour,'1:00:00.0'))
order by hour
太棒了!謝謝!這接近工作。但是,我需要得到總計的會議記錄,而且似乎沒有彙總。當我添加一個羣組時,我只是獲得第一個登錄結果,而不是它在該小時內彙總該用戶的所有登錄分鐘。任何想法對我來說? – RThomas1 2014-08-28 17:03:15
你的意思是什麼?此查詢應爲您在該小時內爲該用戶提供小時,用戶和分鐘數(以timediff表示) - 您不需要按 – antlersoft 2014-08-28 18:08:16
排序的其他小組糟糕,我按照上述順序進行了分組。謝謝! – RThomas1 2014-09-02 17:12:44
- 1. 獲取30分鐘開始和結束時間之間的時間間隔的數據在MySQL
- 2. 計算開始和結束時間的分鐘數
- 3. 如何從日期時間字段獲取開始小時數和結束小時數SQLServer
- 4. 獲取的開始時間和結束時間
- 5. 獲取視頻的開始時間和結束時間
- 6. 給定開始時間,結束時間和秒數。在特定小時內獲取秒數
- 7. 在PHP中獲取小時和分鐘
- 8. 開始時間和結束時間之間的倒數時間
- 9. 獲取小時和分鐘的日期時間
- 10. 使用chrono :: time_point獲取當前的小時數和分鐘數
- 11. 如何在MySQL中獲取當前小時的開始Unix時間戳?
- 12. MySQL的 - 獲取時間以分鐘爲時間值超過一個小時
- 13. Matplotlib:每15分鐘開始一次,從小時開始
- 14. 開始和結束時間 - 每小時/天/周等多少個併發事件
- 15. 計算從開始和結束時間導出的每分鐘會話
- 16. 使用分鐘設置CronTrigger開始和結束時間
- 17. Cron模式與開始和結束時間分鐘
- 18. 獲取日期時間小時和分鐘與領先零
- 19. 從MySQL時間戳獲取時間並以小時,分鐘等形式顯示?
- 20. 小時和分鐘
- 21. 如何在php中檢查DB小時數和分鐘數小於當前小時數和分鐘數?
- 22. 如何獲取kairosdb數據庫的開始時間和結束時間?
- 23. 每個工作的提取開始和結束時間與delayed_job
- 24. 時間除以小時數/分鐘
- 25. oracle-從開始時間開始的1小時數據聚合15分鐘的時間
- 26. 是什麼@(posedge時鐘)之間的差異開始結束....和@(posedge時鐘);?
- 27. Hangfire作業從小時開始,每隔5分鐘運行幾小時
- 28. 如何獲得的開始時間和結束時間爲每個狀態
- 29. 在幾分鐘的時間範圍內獲取mySQL行多個小時
- 30. 如何在angularJs中獲取fullCalendar中的開始時間和結束時間
這種類型的東西很難在SQL,它很可能是很容易做的客戶端應用語言。 – Barmar 2014-08-27 16:56:00
如果登錄和註銷可以跨越午夜邊界,則會變得更加複雜,因此登錄名爲'23:50',註銷爲'01:15'。 – Barmar 2014-08-27 16:57:33