ホームページ >データベース >mysql チュートリアル >T-SQL で個別の日、月、年のコンポーネントから日時値を作成する方法

T-SQL で個別の日、月、年のコンポーネントから日時値を作成する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-16 14:00:06576ブラウズ

How to Create a Datetime Value from Separate Day, Month, and Year Components in T-SQL?

個々の日付部分から 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。