首頁 >資料庫 >mysql教程 >如何在Oracle SQL中根據營業時間計算任務持續時間?

如何在Oracle SQL中根據營業時間計算任務持續時間?

Linda Hamilton
Linda Hamilton原創
2024-12-24 15:37:15777瀏覽

How to Calculate Task Duration Based on Business Hours in Oracle SQL?

在 Oracle SQL 中根據營業時間計算時間

根據營業時間計算任務的持續時間是 Oracle SQL 中的常見需求勞動力管理系統。計算開始時間和結束時間之間的小時數的標準公式不會包含工作時間,這可能會導緻小時數被誇大。為了解決這個問題,我們可以利用 Oracle SQL 強大的日期和時間操作功能,根據指定的營業時間調整計算。

提供的範例資料包含任務資訊、開始時間和結束時間。任務是考慮工作時間(週一到週六上午 8:00 到下午 6:00)來計算每項任務的持續時間。

一種方法涉及利用相關的分層查詢來產生單獨的工作日然後總結每天的時間。此查詢為每個任務的每個潛在工作日產生一個單獨的行。然後,它透過確定任務開始時間與當天上午 8:00 之間較晚的時間來計算工作日的開始時間。結束時間的計算方式類似,使用任務結束時間和當天下午 6:00 中的較小者。

確定每個工作日的開始和結束時間後,即可計算總小時數是透過從結束時間減去開始時間來計算。然後將每天的時間相加,得出每項任務所花費的總時間。

另一個解是使用直接計算工作時間的公式。公式考慮了幾個方面:

  • ISO 週開始時間(代表完整週數)乘以每週可用小時數(10 小時 * 6 天)之間的差值。
  • 透過計算本週末與上週結束時的差值,得出最後一週的完整天數。
  • 找出一週的開始時間和開始日期之間的差值來計算開始日期之前的天數。
  • 最後一天的營業小時數,即結束時間與結束時間之間的差值中的較小者工作日的小時數或 10 小時。
  • 範圍開始前一天的小時數,同樣使用開始時間與工作日開始時間之間的差值或10 中的較小者

將此公式乘以24可將其轉換為分鐘,然後除以15 即可得出工作時間。

兩種解決方案都可以根據指定的工作時間,確保準確追蹤和報告任務所花費的時間。兩種方法之間的選擇取決於資料集大小、效能考量和特定業務需求等因素。

以上是如何在Oracle SQL中根據營業時間計算任務持續時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn