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

OracleのMONTHS_BETWEEN()関数

    Oracle Databaseでは、MONTHS_BETWEEN() 関数は、2つの日付の間の月数を返します。

    構文

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

    MONTHS_BETWEEN(date1, date2)

    次に例を示します:

    SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-10')
    FROM DUAL;

    結果:

    4

    この場合、2つの日付の間にはちょうど4か月あります。

    月と月の最終日は、セッションパラメータNLS_CALENDARによって定義されます。 。セッションで使用されているカレンダーを確認するには、「NLSパラメーターの値を確認する方法」を参照してください。鉱山はグレゴリオ暦を使用しています。

    フラクショナル月

    この関数は、数か月を考慮に入れています。 2つの日付に異なる日の部分が含まれている場合、OracleDatabaseは使用する適切な小数部分を計算します。

    例:

    SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-25')
    FROM DUAL;

    結果:

    3.51612903225806451612903225806451612903

    マイナスの月

    2番目の日付が最初の日付よりも遅い場合、負の金額が返されます:

    SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '2030-06-10')
    FROM DUAL;

    結果:

    -4

    範囲外の日付

    ゼロの日付やその他の範囲外の日付はエラーになります。

    例:

    SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00')
    FROM DUAL
    Error at Command Line : 1 Column : 47
    Error report -
    SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
    01841. 00000 -  "(full) year must be between -4713 and +9999, and not be 0"
    *Cause:    Illegal year entered
    *Action:   Input year in the specified range

    エラーメッセージに示されているように、(通年の)年は-4713の間にある必要があります および+99990ではありません 。

    日付と現在の日付の比較

    SYSDATEを渡すことができます 日付を現在の日付と比較する日時引数として:

    SELECT 
        SYSDATE,
        MONTHS_BETWEEN(SYSDATE, DATE '2030-03-01')
    FROM DUAL;

    結果:

         SYSDATE     MONTHS_BETWEEN(SYSDATE,DATE'2030-03-01') 
    ____________ ____________________________________________ 
    13/AUG/21       -102.587825194145758661887694145758661888

    引数がありません

    MONTHS_BETWEEN()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT MONTHS_BETWEEN()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT MONTHS_BETWEEN()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. クラウド内のMariaDBバックアップとPostgreSQL-ClusterControlリリース1.6.1

    2. 私のお気に入りのPostgreSQLクエリの詳細-そしてなぜそれらも重要なのか

    3. 直接実行する場合と比較してHibernateselectのパフォーマンスが低い-どのようにデバッグしますか?

    4. TreeViewImageComboドロップダウンアクセスメニュー