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

SQL Server(T-SQL)でのMONTH()の例

    SQL Serverでは、MONTH()を使用できます 日付の「月」の部分を返す関数。これは整数として返されます(月の名前ではありません)。

    この関数の使用例を以下に示します。

    構文

    構文は次のようになります:

    MONTH ( date )

    date 次のデータ型のいずれかに解決される式です。

    • 日付
    • 日時
    • datetimeoffset
    • datetime2
    • smalldatetime
    • 時間

    これは、列式、式、文字列リテラル、またはユーザー定義変数にすることができます。

    仕組みの基本的な例は次のとおりです。

    SELECT 
       SYSDATETIME() AS 'Date',
       MONTH(SYSDATETIME()) AS 'Month';

    結果:

    +-----------------------------+---------+
    | Date                        | Month   |
    |-----------------------------+---------|
    | 2018-06-18 00:39:06.7954314 | 6       |
    +-----------------------------+---------+

    したがって、MONTH() 関数はdatetime2から月を抽出できました 値(SYSDATETIME()によって返されました 関数)。

    文字列リテラルとして提供される日付

    日付が文字列リテラルとして提供される例を次に示します。

    SELECT MONTH('2019-01-07') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 1        |
    +----------+

    そして、日付が別の形式で提供される例を次に示します。

    SELECT MONTH('07/01/2017') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 7        |
    +----------+

    ただし、通常、このような形式で日付を使用することは避けるのが最善です。そうする必要がある場合は、現在のセッションの言語設定や日付形式の設定に注意する必要があります。

    言語設定

    前の例の出力は、現在のセッションの言語設定や日付形式の設定によって異なります。

    言語を設定すると、日付形式も同時に暗黙的に設定されます。

    2つの異なる言語環境で同じ日付の引数を指定するとどうなりますか。

    イギリス

    SET LANGUAGE British;
    SELECT MONTH('07/01/2017') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 1        |
    +----------+

    us_English

    SET LANGUAGE us_English;
    SELECT MONTH('07/01/2017') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 7        |
    +----------+

    日付形式の設定

    日付形式の設定は言語の設定を上書きする可能性があるため、この設定にも注意する必要があります。たとえば、 us_Englishを使用できます。 私たちの言語(デフォルトの日付形式は mdy ) )、ただし、日付形式をオーバーライドして dmyにすることもできます。 。

    次に例を示します:

    us_English –デフォルトの日付形式

    ここでは、言語を us_Englishに設定します 、日付形式を myyに暗黙的に設定します 。

    SET LANGUAGE us_English;
    SELECT MONTH('07/01/2017') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 7        |
    +----------+

    us_English –日付形式の上書き

    ここでは、言語を us_Englishに設定します (これは暗黙的に日付形式を設定します)が、次に日付形式を dmyに明示的に設定します。 。これは、言語を設定したときに暗黙的に設定された日付形式を上書きします。

    SET LANGUAGE us_English;
    SET DATEFORMAT dmy;
    SELECT MONTH('07/01/2017') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | 1        |
    +----------+

    月の名前を返す

    (月番号ではなく)月名を返す必要がある場合は、SQLServerで日付から月名を取得する3つの方法を参照してください。


    1. OracleSQLの営業時間に基づいて時間を計算する

    2. SQLエラー:ORA-00933:SQLコマンドが正しく終了していません

    3. PostgreSQL8.3以降のOLTPパフォーマンス

    4. エンティティフレームワーク6にMySQL接続を使用できません