T-SQL の日付と時刻の値の構築: 日、月、年の値から日付と時刻を正しく作成します。
離散日付コンポーネントを単一の日時値に変換することは、SQL Server の一般的なタスクです。このガイドでは、正確な日付表現を保証するために、日、月、年の値から日時を作成する正しい方法を説明します。
問題
DATEPART 関数を使用して個々の日付コンポーネントを結合すると、多くの場合、誤った結果が生成されます。質問で指定された式 CAST(DATEPART(year, DATE) '-' DATEPART(month, DATE) '-' DATEPART(day, DATE) AS DATETIME)
は日時値を正しく組み立てていません。
解決策
特定の日付コンポーネントから日時を作成する最良の方法は、値に対して算術演算を実行することです。次のステートメントは、このアプローチを示しています:
<code class="language-sql">SELECT DateAdd(day, @DayOfMonth - 1, DateAdd(month, @Month - 1, DateAdd(Year, @Year-1900, 0)))</code>
このステートメントは、SQL Server の日時値の内部表現を利用しています。最初の部分は 1900 年 1 月 1 日からの日数を表し、2 番目の部分は 1 日の小数部分 (時刻) を表します。 。
代替案
SQL Server 2012 以降、この目的に直接使用できる DATEFROMPARTS(year, month, day)
という名前の組み込み関数が導入されました。
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth)</code>
うるう年の考慮事項
閏年を扱うときは、2 月の余分な日を考慮して、必ず最初に年の加算を実行してください。次の変更されたステートメントは問題を解決します:
<code class="language-sql">SELECT DateAdd(month, @Month - 1, DateAdd(year, @Year-1900, @DayOfMonth - 1))</code>
結論
これらのメソッドを採用することで、開発者は T-SQL の個々の日、月、年のコンポーネントから日時値を効率的に作成でき、日付表現の精度とうるう年の正しい処理を確保できます。
以上がT-SQL で日、月、年から日時値を正しく作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。