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

PERIOD_DIFF()の例– MySQL

    MySQLにはPERIOD_DIFF()があります 2つの期間の違いを見つけることができる関数。ピリオドは2つの別個の引数として提供され、 YYMMの形式である必要があります。 またはYYYYMM

    構文

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

    PERIOD_DIFF(P1,P2)
    

    ここでP1 は最初の期間であり、P2 2番目です。

    この関数は日付を使用しているように見えますが、期間引数は実際には日付値ではないことに注意してください。

    例1-基本的な使用法

    これが基本的な例です。

    SELECT PERIOD_DIFF(199906, 199905);
    

    結果:

    +-----------------------------+
    | PERIOD_DIFF(199906, 199905) |
    +-----------------------------+
    |                           1 |
    +-----------------------------+
    

    したがって、この場合、2つの期間の間に1か月の違いがあります。

    例2–否定的な結果

    これらの2つの期間を入れ替えるとどうなりますか。

    SELECT PERIOD_DIFF(199905, 199906);
    

    結果:

    +-----------------------------+
    | PERIOD_DIFF(199905, 199906) |
    +-----------------------------+
    |                          -1 |
    +-----------------------------+
    

    予想どおり、結果は負の値になります。

    例3–2桁の年

    2桁の年を使用することもできます(形式が YYMM になるように) )。実例を示します。

    SELECT PERIOD_DIFF(9906, 9905);
    

    結果:

    +-------------------------+
    | PERIOD_DIFF(9906, 9905) |
    +-------------------------+
    |                       1 |
    +-------------------------+
    

    例4–現在の日付を使用する

    これは、現在の日付から期間引数の1つを導出する例です。次に、その期間が固定期間と比較されます。

    SELECT 
        CURDATE( ) AS 'Current Date',
        EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period',
        199901 AS 'Previous Period',
        PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM CURDATE( )), 199901) AS 'Difference';
    

    結果:

    +--------------+----------------+-----------------+------------+
    | Current Date | Current Period | Previous Period | Difference |
    +--------------+----------------+-----------------+------------+
    | 2018-06-30   |         201806 |          199901 |        233 |
    +--------------+----------------+-----------------+------------+
    

    例5–データベースの例

    これは、前の例をさらに一歩進めて、現在の期間をデータベース内の日付から派生した期間と比較する例です。

    USE sakila;
    SELECT
        EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period',
        payment_date AS 'Payment Date',
        EXTRACT(YEAR_MONTH FROM payment_date) AS 'Payment Period',
        PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM payment_date), EXTRACT(YEAR_MONTH FROM CURDATE( ))) AS 'Difference'
    FROM payment
    WHERE payment_id = 1;
    

    結果:

    +----------------+---------------------+----------------+------------+
    | Current Period | Payment Date        | Payment Period | Difference |
    +----------------+---------------------+----------------+------------+
    |         201806 | 2005-05-25 11:30:37 |         200505 |       -157 |
    +----------------+---------------------+----------------+------------+
    

    1. SQLServerでカンマ区切りのリストを行に変換する方法

    2. PostgreSQLインデックスとInnoDBインデックス-違いを理解する

    3. OracleEBSでXMLImporterとFndXdfCmpを使用する方法

    4. SQLFiddleは壊れていますか? Oracle、SQL Server、...のエラー