問題:
2 つのタイムスタンプを指定して、労働時間の数を決定するその間は、週末を非稼働日とし、稼働時間を午前 8 時から午前 8 時までとみなします。 3:00 PM.例:
解決策 - 四捨五入された結果:
SELECT count(*) AS work_hours FROM generate_series (timestamp '2013-06-24 13:30', timestamp '2013-06-24 15:29' - interval '1h', interval '1h') h WHERE EXTRACT(ISODOW FROM h) < 6 AND h::time >= '08:00' AND h::time <= '14:00';
ソリューション - 詳細精度:
より小さい時間単位 (例: 5 分のスライス) を使用すると、精度が向上します:SELECT count(*) * interval '5 min' AS work_interval FROM generate_series (timestamp '2013-06-24 13:30', timestamp '2013-06-24 15:29' - interval '5 min', interval '5 min') h WHERE EXTRACT(ISODOW FROM h) < 6 AND h::time >= '08:00' AND h::time <= '14:55';
解決策 - 正確な結果:
マイクロ秒レベルまで正確な結果を得るには、次のコマンドを使用します。アプローチ:以上がPostgreSQL で週末を除き、特定の労働時間を考慮して 2 つの日付の間の労働時間を計算する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。