sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)で月番号を月名に変換する

    以下のT-SQLコードを使用して、月番号をSQLServerの対応する名前に変換できます。

    これは、実際には完全な日付がない場合、つまり月番号だけがある場合に使用します。 行う場合 日付を入力してから、日付から月の名前を取得する方法を説明します。

    DATENAME()を使用すると、対応する番号から月の名前を取得できます。 DATEADD()と組み合わせて機能する 。

    10月(10月)を使用する例を次に示します。

    SELECT DATENAME( 
        month, 
        DATEADD( month , 10, -1 )
        );

    結果:

    October

    コードの説明

    なぜ-1があるのか​​疑問に思っている場合 上記のコードでは、基準日が1900-01-01(正確には、1900-01-01 00:00:00.000)であるためです。

    01に10を加算すると、11になります。これは11月(間違った月)です。したがって、1を引く必要があります。

    次の例は、私の言葉よりもこれをよく説明しているはずです。さまざまなDATEADD()があります 3番目の引数として使用するものに応じて返される値。

    SELECT 
      DATEADD( month, 0, 0 ) AS [Base Date],
      DATEADD( month, 10, 0 ) AS [Add 10],
      DATEADD( month, 10, -1 ) AS [Subtract 1];

    結果:

     +-------------------------+-------------------------+-------------------------+
     | Base Date               | Add 10                  | Subtract 1              |
     |-------------------------+-------------------------+-------------------------|
     | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
     +-------------------------+-------------------------+-------------------------+ 

    したがって、3番目のオプションは正しい月番号を提供し、DATENAME()を使用するだけです。 月の名前に変換します。

    代替:FORMAT()

    DATENAME()が気に入らない場合 関数の場合、FORMAT()と交換できます 代わりに機能します。同じ概念が適用されます。

    SELECT FORMAT( 
        DATEADD( month , 10, -1 ),
        'MMMM'
        );

    結果:

    October

    1. 赤方偏移で移動平均を計算する方法

    2. WindowsにMySQLWorkbenchをインストールする方法

    3. エラー:ファイル「$ libdir / plpython2」にアクセスできませんでした–エラー:ファイル「$ libdir/plpython3」にアクセスできませんでした

    4. SQLServerで文字列内の各単語の最初の文字を大文字にする最良の方法は何ですか