個々の日付部分から T-SQL で DATETIME 値を構築する
古いバージョンの SQL Server (SQL Server 2005 など) では、個別の日、月、年のコンポーネントから DATETIME
値を直接作成するのは難しく、エラーが発生しやすい可能性があります。このガイドでは、これを確実に達成するためのいくつかの方法について概説します。
方法 1: 日時構築に DATEADD
を使用する
このメソッドは、DATEADD
関数を利用して DATETIME
を段階的に構築します。
<code class="language-sql">DECLARE @DayOfMonth TINYINT; SET @DayOfMonth = 13; DECLARE @Month TINYINT; SET @Month = 6; DECLARE @Year INT; SET @Year = 2006; SELECT DATEADD(day, @DayOfMonth - 1, DATEADD(month, @Month - 1, DATEADD(year, @Year - 1900, 0)));</code>
@DayOfMonth
と @Month
から 1 を減算すると、DATEADD
が基準日 (1900 年 1 月 1 日) からのオフセットで機能するという事実が説明されます。
方法 2: 代替 DATEADD
構文
DATEADD
を使用したより簡潔なアプローチは次のとおりです。
<code class="language-sql">SELECT DATEADD(yy, @Year - 1900, DATEADD(m, @Month - 1, @DayOfMonth -1));</code>
これは、DATEADD
呼び出しの配置が少し異なるだけで同じ結果を実現します。
方法 3: DATEFROMPARTS
(SQL Server 2012 以降)
SQL Server 2012 以降のバージョンでは、便利な DATEFROMPARTS
関数が提供されています。
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth);</code>
SQL Server のバージョンがサポートしている場合、これが最も簡単な方法です。
うるう年の処理
DATEFROMPARTS
は閏年を自動的に処理しますが、DATEADD
メソッドは閏年も正しく処理できるほど堅牢です。提供されている例では、うるう年に特別な調整は必要ありません。
SQL Server のバージョンとコーディング スタイルに最も適した方法を選択してください。 DATEFROMPARTS
は、SQL Server のバージョンで許可されている場合、シンプルさと明確さの点で推奨されるアプローチです。
以上がT-SQL で個別の日、月、年のコンポーネントから日時値を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。