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

SQL Server(T-SQL)で日付から月の名前を取得する3つの方法

    SQL Serverを使用している場合、T-SQLを使用して日付から月の名前を返す必要がある場合は、いくつかの異なるオプションがあります。月の名前では、月の番号については話していません( 07 など) )。今月のフルネームについて話している(7月など) 。

    たとえば、 2018-07-01の日付が指定された場合 、7月が必要です 返却されます。

    この記事では、T-SQLを使用してSQLServerの日付から月の名前を返す3つの方法を紹介します。

    FORMAT()関数

    FORMAT() 関数は、指定された形式とオプションのカルチャでフォーマットされた値を返します。これを使用して、日付から月の名前を返すことができます。

    次に例を示します:

    DECLARE @date datetime2 = '2018-07-01';
    SELECT FORMAT(@date, 'MMMM') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | July     |
    +----------+
    

    この場合、MMMMのフォーマット文字列を提供しました これは、月の名前を返すためのカスタムの日付と時刻の形式の文字列です。

    FORMAT()の良いところ 関数は、使用するカルチャを指定できるオプションの引数を受け入れることです。

    次にいくつかの例を示します。

    DECLARE @date datetime2 = '2018-07-01';
    SELECT 
        FORMAT(@date, 'MMMM', 'en-US') AS 'en-US',
        FORMAT(@date, 'MMMM', 'es-es') AS 'es-es',
        FORMAT(@date, 'MMMM', 'de-de') AS 'de-de',
        FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';

    結果:

    +---------+---------+---------+---------+
    | en-US   | es-es   | de-de   | zh-cn   |
    |---------+---------+---------+---------|
    | July    | julio   | Juli    | 七月    |
    +---------+---------+---------+---------+
    

    文化の議論を提供しない場合は、現在のセッションの言語が使用されます。現在のセッションで使用されている言語がわからない場合は、現在のセッションの言語を取得する3つの方法があります。言語を変更する必要がある場合は、次の方法で別の言語に設定できます。

    FORMAT()を使用することもできます 月の省略名を取得する関数。これを行うには、MMMを使用するだけです。 (3つのM 4ではなくs)。

    省略された月の名前と完全な月の名前の両方を返す例を次に示します。

    DECLARE @date datetime2(0) = '2028-09-01';
    SELECT 
        FORMAT(@date, 'MMM', 'en-US') 'en-US',
        FORMAT(@date, 'MMM', 'es-es') 'es-es',
        FORMAT(@date, 'MMM', 'it') 'it'
    UNION ALL
    SELECT 
        FORMAT(@date, 'MMMM', 'en-US'),
        FORMAT(@date, 'MMMM', 'es-es'),
        FORMAT(@date, 'MMMM', 'it');

    結果:

    +-----------+------------+-----------+
    | en-US     | es-es      | it        |
    |-----------+------------+-----------|
    | Sep       | sep.       | set       |
    | September | septiembre | settembre |
    +-----------+------------+-----------+
    

    これは、日付から月の省略名を取得する多くの方法の1つにすぎません(ただし、この方法が間違いなく最適です)。日付から省略された月の名前を返す方法は、少なくとも4つあります。

    DATENAME()関数

    DATENAME() 関数はDATEPART()に似ています nameを返すことを除いて関数 指定された日付部分の(ただし、名前が該当する場合のみ)。つまり、必要に応じて、曜日の名前または月の名前が返されます。

    この関数を使用して月の名前を取得する方法は次のとおりです。

    DECLARE @date datetime2 = '2018-07-01';
    SELECT DATENAME(month, @date) AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | July     |
    +----------+
    

    MONTHNAME()ODBCスカラー関数

    日付から月の名前を返すためのODBCスカラー関数があります。その名前はMONTHNAME() 、次のようになります:

    DECLARE @date datetime2 = '2018-07-01';
    SELECT {fn MONTHNAME(@date)} AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | July     |
    +----------+
    

    T-SQLでODBCスカラー関数を使用する場合、それらは中括弧({})で囲まれます。 )、関数名の前にはfnが付いています 。

    短い月の名前を取得する必要がある場合は、SQLServerで日付から短い月の名前を取得する5つの方法をご覧ください。


    1. SQLServerでのトランザクションROLLBACKの使用

    2. SQLAlchemy1つのマップされたクラスの複数の外部キーを同じ主キーに

    3. varchar2(n BYTE | CHAR)デフォルト->CHARまたはBYTE

    4. PostgreSQLでのキャッシング