PostgreSQL で 2 つの日付間の労働時間を計算する方法
課題
2 つの日付間の労働時間の計算は、特に要因を考慮すると複雑になる場合があります週末や特定の勤務時間など。この投稿では、PostgreSQL を使用してこのタスクを効率的に処理するためのいくつかのアプローチを検討します。
週末と労働時間を考慮する
労働時間が月曜から金曜の 8 時の間であると仮定しましょう。午前と午後3時。この定義を使用すると、次のように任意の 2 つのタイムスタンプ間の労働時間を計算できます:
- 週末を無視: 日付が週末 (土曜日または日曜日) に該当するかどうかを確認し、それらを除外します。
- Truncate hours: のみを含むようにタイムスタンプを変換します。勤務時間内の日付と時刻。たとえば、「2023-03-08 19:30:00」は「2023-03-08 15:00:00」になります。
- 時間の計算: 時間の差を計算します。切り捨てられた終了時間と切り捨てられた開始時間。これにより、総作業時間数が得られます。
PostgreSQL ソリューション
四捨五入された結果
四捨五入された結果を取得するには、次を使用できます。 PostgreSQL のgenerate_series() 関数は、勤務時間の範囲内で一連の 1 時間間隔を生成します。次に、指定された期間内に該当する間隔の数を数えます。クエリの例を次に示します。
SELECT count(*) AS work_hours FROM generate_series('2023-03-08 14:00', '2023-03-09 09:00' - interval '1 hour', interval '1 hour') h WHERE EXTRACT(ISODOW FROM h) = '08:00' AND h::time <p><strong>さらなる精度</strong></p><p>より正確な結果を得るには、5 分単位など、より小さな時間単位を使用できます。次のクエリは 5 分精度の結果を提供します。</p><pre class="brush:php;toolbar:false">SELECT count(*) * interval '5 min' AS work_interval FROM generate_series('2023-03-08 14:01', '2023-03-09 09:00' - interval '5 min', interval '5 min') h WHERE EXTRACT(ISODOW FROM h) = '08:00' AND h::time <p><strong>正確な結果</strong></p><p>正確な結果については、開始を個別に処理することで、より微妙なアプローチを取ることができます。そして時間枠の終わり。マイクロ秒までの正確な間隔の結果を提供するクエリを次に示します。</p><pre class="brush:php;toolbar:false">SELECT t_id , COALESCE(h.h, '0') - CASE WHEN EXTRACT(ISODOW FROM t_start) v_start AND t_start::time v_start AND t_end::time = v_start AND h::time <h3 id="アプローチの比較">アプローチの比較</h3><p>提示されたさまざまなアプローチにより、さまざまなレベルの精度とパフォーマンスが提供されます。</p><p><strong>四捨五入された結果:</strong> この方法は実装が簡単で、特に入力時間が境界値に近い場合に、合理的な推定値が得られます。労働時間の範囲。<br><strong>精度の向上:</strong> このアプローチでは、より小さな時間単位を使用することで精度が向上します。ほとんどのシナリオでは、パフォーマンスへの影響は最小限です。<br><strong>正確な結果:</strong> この方法はより複雑で、追加の計算が必要です。最も正確な結果が得られますが、計算コストが高くなる可能性があります。</p><h3 id="結論">結論</h3><p>適切なアプローチの選択は、必要な精度とパフォーマンスの制約によって異なります。汎用用途では、5 分単位の「More Precision」方式が精度と効率のバランスに優れています。ただし、絶対的な精度が最優先される場合は、「正確な結果」アプローチを使用して、マイクロ秒単位の正確な間隔を提供できます。</p>
以上がPostgreSQL で 2 つの日付の間の労働時間を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlstringTypesimpactStorageandperformanceAseasfollows:1)churisfixed-regents、whuscanbasterbutlessspace-efficient.2)varcharisvariaible、morespace-efficient-butpotentiallyslower.3)Textisforgergetext、storedoutext、

mysqlstringTypesincludevarchar、テキスト、char、列挙、およびセット。1)varcharisSatileforvariaible-lengthstringsuptoaspoecifedlimit.2)TextisidealforLargetExtStorageWithDeinLength.3)charispixed-consinterconsistentalikodes.4)

mysqloffersvariousstringdatatypes:1)charfixed-lengthstrings、2)varcharforvariable-lengthtext、3)binaryandvartyforbinarydata、4)blobandtextforlargedata、and5)enumandsetforControlledinput.

tograntpermissionstonewmysqlusers、フォローステープ:1)Accessmysqlasauserwithsufthiveerprivileges、2)createanewuser withthecreateusercommand、3)usethegrantcommandtospecifypermissionsionsionsionsionsionsionsionsionsionsionselect、挿入、挿入、挿入、更新、4)

toadduusersinmysqucrectivally andcurally、soflowthesteps:1)usethecreateuserstatementtoaddanewuser、指定するhostandastrongpassword.2)補助金を使用して、補助金を使用して、補助すること、

toaddanewuserwithpermissionsinmysql、followthesesteps:1)createtheuserwithcreateuser'newuser '@' localhost'identifiedifiedifiedifiedby'pa ssword ';。2)grantreadacestoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';。3)grantwriteaccessto '

MySQLの文字列データ型には、CHAR、VARCHAR、バイナリ、Varbinary、BLOB、およびテキストが含まれます。照合は、文字列の比較とソートを決定します。 1.Charは固定長の文字列に適しており、Varcharは可変長文字列に適しています。 2.バイナリとVarbinaryはバイナリデータに使用され、BLOBとテキストは大規模なオブジェクトデータに使用されます。 3. UTF8MB4_UNICODE_CIなどのルールのソートは、高度と小文字を無視し、ユーザー名に適しています。 UTF8MB4_BINは症例に敏感であり、正確な比較が必要なフィールドに適しています。

最適なMySQLVarcharの列の長さの選択は、データ分析に基づいており、将来の成長を検討し、パフォーマンスの影響を評価し、文字セットの要件を評価する必要があります。 1)データを分析して、典型的な長さを決定します。 2)将来の拡張スペースを予約します。 3)パフォーマンスに対する大きな長さの影響に注意してください。 4)ストレージに対する文字セットの影響を考慮します。これらの手順を通じて、データベースの効率とスケーラビリティを最適化できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
