ホームページ > データベース > mysql チュートリアル > T-SQL で時間値を最も近い 15 分間隔に効率的に丸めるにはどうすればよいですか?

T-SQL で時間値を最も近い 15 分間隔に効率的に丸めるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-10 14:16:41
オリジナル
218 人が閲覧しました

How to Efficiently Round Time Values to the Nearest 15-Minute Interval in T-SQL?

T-SQL: 最も近い 15 分に四捨五入した正確な時間

時間値を最も近い 15 分単位に効率的に丸めることは、データベースの一般的なタスクです。この記事では、ユーザー定義関数や CASE ステートメントの複雑さを回避する、組み込みの T-SQL 関数を使用した合理化されたアプローチを示します。

目的は、時間の値を最も近い 15 分単位に四捨五入することです。 たとえば、「00:08:00」は「00:15:00」に切り上げられ、「00:07:00」は「00:00:00」に切り捨てられます。

非常に効率的な方法には、DATETADD 関数と DATEDIFF 関数を組み合わせることが含まれます。この式は、固定開始点 (「2000-01-01」など) からの分単位の差を利用して、最も近い 15 分間隔を計算します。 これにより、非常に長い日付範囲で発生する可能性のある DATEDIFF 整数オーバーフローの問題が回避されます。

式は次のように機能します:

  1. DATEDIFF(minute, '2000-01-01', YourTimeValue): 固定日付と時間値の間の合計分を計算します。

  2. / 15: 合計分を 15 で割って、15 分間隔の数を決定します。

  3. * 15: 結果に 15 を乗算して、最も近い 15 分の倍数を取得します。

  4. DATETADD(minute, ..., '2000-01-01'): 計算された分を固定日付に加算して、丸められた時間値を生成します。

したがって、最も近い 15 分に四捨五入する完全な式は次のとおりです。

<code class="language-sql">DATETADD(minute, (DATEDIFF(minute, '2000-01-01', YourTimeValue) / 15) * 15, '2000-01-01')</code>
ログイン後にコピー

YourTimeValue を実際の時間列または変数に置き換えます。

この手法は他の丸め間隔にも適用できます。 たとえば、最も近い 30 秒に四捨五入するには、式内の secondminute に、3015 に置き換えるだけです。 重要なのは、オーバーフロー エラーを防ぐために固定開始日を使用することです。 このアプローチは、T-SQL 内で正確な時間を丸めるための簡潔で効率的なソリューションを提供します。

以上がT-SQL で時間値を最も近い 15 分間隔に効率的に丸めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート