SQL Serverでは、MONTH()
を使用できます 月の名前を対応する番号に変換する関数。
例
月の名前を月の番号に変換する例を次に示します。
SELECT MONTH('September' + '1,1');
結果:
9
ここで行っているのは、基本的に「日付」(指定した月を含む)を作成して、SQLServerがMONTH()
を使用するときにエラーをスローしないようにすることです。 有効な日付なしで機能します。
この関数は、時間に解決できるすべての式を受け入れます 、日付 、 smalldatetime 、日時 、 datetime2 、または datetimeoffset 価値。式、列式、ユーザー定義変数、または文字列リテラルにすることができます。
その他の「日付のような」
次のようにすることで、より「日付のような」引数を提供することもできます。
SELECT MONTH('September' + ' 01, 1900');
結果:
9
現在の日付と年
または、現在の日と年を使用したい場合は、次のようにすることができます:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
結果:
9
ただし、明確にするために、指定された月が現在の月と同じでない限り、現在の日付とは異なる日付になってしまいます。
これが私が何を意味するかを説明するための例です:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
結果:
+----------------+--------------------+----------------+ | Today | Modified | Month Number | |----------------+--------------------+----------------| | March 22, 2020 | September 22, 2020 | 9 | +----------------+--------------------+----------------+
このクエリを2020年3月22日に実行しましたが、変更日は2020年9月22日です。
とにかく、MONTH()
を使用すると、正しい月番号が返されます。 。