ホームページ > データベース > mysql チュートリアル > CASE ステートメントを使用せずに SQL Server で月番号を月名に変換する方法

CASE ステートメントを使用せずに SQL Server で月番号を月名に変換する方法

Mary-Kate Olsen
リリース: 2025-01-18 19:06:15
オリジナル
887 人が閲覧しました

How to Convert Month Numbers to Month Names in SQL Server Without CASE Statements?

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 サイトの他の関連記事を参照してください。

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