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

MySQLのTIMEDIFF()とSUBTIME():違いは何ですか?

    MySQLにTIMEDIFF()があることに気づいたかもしれません。 関数とSUBTIME() 働き。また、多くの場合、どちらも同じ結果を返すことに気付いたかもしれません。では、これら2つの機能の違いは何か疑問に思われるかもしれません。

    調べてみましょう。

    構文

    まず、各関数の構文を見てみましょう。

    SUBTIME()

    SUBTIME(expr1,expr2)
    

    ここで、expr1 は時刻または日時の式であり、expr2 時間表現です。

    TIMEDIFF()

    TIMEDIFF(expr1,expr2)
    

    ここで、expr1 およびexpr2 は時刻または日付と時刻の式ですが、両方とも同じタイプである必要があります。

    違い

    違いは次のとおりです:

    • SUBTIME()を使用する場合 、2番目の引数は時間式である必要があります
    • TIMEDIFF()を使用する場合 2番目の引数は、時刻または日時式のいずれかですが、いずれの場合も、最初の式と同じタイプである必要があります

    例1-両方の引数は「時間」値です

    これが両方の関数の比較です。両方の引数は時間値です。

    SELECT 
        TIMEDIFF('11:35:25', '10:35:25') AS 'TIMEDIFF',
        SUBTIME('11:35:25', '10:35:25') AS 'SUBTIME';
    

    結果:

    +----------+----------+
    | TIMEDIFF | SUBTIME  |
    +----------+----------+
    | 01:00:00 | 01:00:00 |
    +----------+----------+
    

    予想どおり、どちらの関数も同じ結果を返します。

    例2–両方の引数は「日時」の値です

    これは両方の関数の比較です。両方の引数は日時の値です。

    SELECT 
        TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF',
        SUBTIME('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';
    

    結果:

    +-----------+---------+
    | TIMEDIFF  | SUBTIME |
    +-----------+---------+
    | 744:00:00 | NULL    |
    +-----------+---------+
    

    この場合、SUBTIME() 2番目の引数が時刻の値ではなかった(日時の値だった)ため、null値を返しました。

    例3–最初の引数は「datetime」、2番目は「time」

    ここで、最初の引数は日時の値です。 2番目の引数は時間値です。

    SELECT 
        TIMEDIFF('2021-02-01 10:35:25', '09:35:25') AS 'TIMEDIFF',
        SUBTIME('2021-02-01 10:35:25', '09:35:25') AS 'SUBTIME';
    

    結果:

    +----------+---------------------+
    | TIMEDIFF | SUBTIME             |
    +----------+---------------------+
    | NULL     | 2021-02-01 01:00:00 |
    +----------+---------------------+
    

    この場合、TIMEDIFF() 両方の引数が異なるタイプであったため、null値を返しました。

    例4–最初の引数は「時間」、2番目の引数は「日時」

    そしてここで、それを交換します。最初の引数は時間値です。 2番目の引数は日時の値です。

    SELECT 
        TIMEDIFF('09:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF',
        SUBTIME('09:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';
    

    結果:

    +----------+---------+
    | TIMEDIFF | SUBTIME |
    +----------+---------+
    | NULL     | NULL    |
    +----------+---------+
    

    この場合:

    • TIMEDIFF() 両方の引数が異なるタイプであったため、null値を返しました。
      SUBTIME() 2番目の引数の時間値のみを受け入れるため、null値を返しました。

    1. HP-UXItaniumをSQLServerに接続します

    2. SQLServer2012の拡張イベントに対する重要な変更

    3. MySQLWorkbenchの代替-ClusterControl構成管理

    4. InnoDBに1つまたは複数のテーブルの外部キーを再チェックするように強制しますか?