SQL Server: 月の数値を名前に効率的に変換する
SQL Server データベースは、多くの場合、月を数値として保存します (1 月は 1、2 月は 2 など)。 この記事では、面倒な CASE
ステートメントに頼らずに、これらの数値表現を対応する月の名前に変換する方法を示します。
DATENAME
機能の活用
簡潔な解決策の鍵は、SQL Server の組み込み DATENAME
関数にあります。この関数は、月名を含む日付の特定の部分を抽出します。
解決策
次の SQL クエリは変換を適切に処理します。
<code class="language-sql">SELECT DATENAME(MONTH, DATEADD(MONTH, @MonthNumber, 0) - 1)</code>
説明:
DATEADD(MONTH, @MonthNumber, 0)
: これにより、入力 @MonthNumber
(月を表す) が基準日 '0' (1900 年 1 月 1 日を表す) に追加されます。これにより、ターゲット月の初日に巧みに配置されます。- 1
: 1 日を減算すると、DATENAME
が目的の月の名前を正しく返し、1 つずつ異なるエラーが回避されます。DATENAME(MONTH, ...)
: 最後に、DATENAME
は計算された日付から月の名前を抽出します。代替アプローチ:
同様に効果的な代替案は次のとおりです。
<code class="language-sql">SELECT DATENAME(MONTH, DATEADD(MONTH, @MonthNumber, -1))</code>
これは、1 月 1 日の 1 か月前の日付に月番号を直接追加し、もう少しコンパクトな方法で同じ結果を実現します。
使用方法:
@MonthNumber
を月の数値 (1 ~ 12) に置き換えるだけです。 クエリは対応する月の名前を返します。 例:
<code class="language-sql">SELECT DATENAME(MONTH, DATEADD(MONTH, 5, 0) - 1); -- Returns 'May'</code>
以上がCASE ステートメントを使用せずに SQL Server で月番号を月名に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。