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

SUBTIME()の例– MySQL

    MySQLでは、SUBTIME()を使用できます 時刻または日時式から時刻値を減算する関数。

    それが機能する方法は、2つの引数を提供することです。 1つ目は時刻または日時の値で、2つ目は時刻の値です。 SUBTIME() 次に、関数は最初の引数から2番目の引数を減算し、結果を返します。

    構文

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

    SUBTIME(expr1,expr2)
    

    ここで、expr1 時間式または日時式のいずれかであり、expr2 時間表現です。

    したがって、expr2 expr1から減算されます 。

    例1-基本的な使用法

    実例を示します。

    SELECT SUBTIME('12:35:00', '1:30');
    

    結果:

    +-----------------------------+
    | SUBTIME('12:35:00', '1:30') |
    +-----------------------------+
    | 11:05:00                    |
    +-----------------------------+
    

    例2–秒の減算

    この例では、時間値から秒数も減算します。

    SELECT SUBTIME('12:35:00', '1:30:30');
    

    結果:

    +--------------------------------+
    | SUBTIME('12:35:00', '1:30:30') |
    +--------------------------------+
    | 11:04:30                       |
    +--------------------------------+
    

    また、最初の時間引数から秒の部分を省略しても、同じ結果が得られます。

    SELECT SUBTIME('12:35', '1:30:30');
    

    結果:

    +-----------------------------+
    | SUBTIME('12:35', '1:30:30') |
    +-----------------------------+
    | 11:04:30                    |
    +-----------------------------+
    

    例3–分数秒

    分数秒の部分を引くこともできます。

    SELECT SUBTIME('12:35:00.888888', '1:30:30.555555');
    

    結果:

    +----------------------------------------------+
    | SUBTIME('12:35:00.888888', '1:30:30.555555') |
    +----------------------------------------------+
    | 11:04:30.333333                              |
    +----------------------------------------------+
    

    例4–否定的な結果

    結果が負の値になることは非常に有効です。

    SELECT SUBTIME('12:35:00', '20:30:30');
    

    結果:

    +---------------------------------+
    | SUBTIME('12:35:00', '20:30:30') |
    +---------------------------------+
    | -07:55:30                       |
    +---------------------------------+
    

    例5–日時値から減算

    この例では、日時の値から減算します(前の例のように時間の値だけではありません)。

    SELECT SUBTIME('2021-01-01 12:35:00', '1:30:30');
    

    結果:

    +-------------------------------------------+
    | SUBTIME('2021-01-01 12:35:00', '1:30:30') |
    +-------------------------------------------+
    | 2021-01-01 11:04:30                       |
    +-------------------------------------------+
    

    この場合、2番目の引数はそれに影響を与えるほど大きくなかったため、日付の部分は変更されていません。

    この次の例では、2番目の引数を増やして、日付部分に影響を与えるのに十分な大きさにします。

    SELECT SUBTIME('2021-01-01 12:35:00', '100:30:30');
    

    結果:

    +---------------------------------------------+
    | SUBTIME('2021-01-01 12:35:00', '100:30:30') |
    +---------------------------------------------+
    | 2020-12-28 08:04:30                         |
    +---------------------------------------------+
    

    この例に示されているように、時間の値は24時間未満に制限されていません(-838:59:59 の範囲で指定できます)。 838:59:59

    ただし、次のようなこともできます:

    SELECT SUBTIME('2021-01-01 12:35:00', '4 4:30:30');
    

    結果:

    +---------------------------------------------+
    | SUBTIME('2021-01-01 12:35:00', '4 4:30:30') |
    +---------------------------------------------+
    | 2020-12-28 08:04:30                         |
    +---------------------------------------------+
    

    例6–時間値の制限

    前述のように、時間データ型の範囲は -838:59:59です。 838:59:59 。これは、それ以上減算できないことを意味します。また、結果がこの範囲外になることはありません。たとえば、これを行うことはできません:

    SELECT SUBTIME('12:35:00', '20000000:30:30');
    

    結果:

    +---------------------------------------+
    | SUBTIME('12:35:00', '20000000:30:30') |
    +---------------------------------------+
    | -826:24:59                            |
    +---------------------------------------+
    1 row in set, 1 warning (0.01 sec)
    

    結果は完全に間違っており、MySQLは警告を表示します。

    しかし、注意する必要があるのは2番目の議論だけではありません。最初の引数が最初に負の値である場合にも、同じ問題が発生します。

    SELECT SUBTIME('-800:35:00', '50:30:30');
    

    結果:

    +-----------------------------------+
    | SUBTIME('-800:35:00', '50:30:30') |
    +-----------------------------------+
    | -838:59:59                        |
    +-----------------------------------+
    1 row in set, 1 warning (0.00 sec)
    

    1. ユーティリティ:2分で表からデータをエクスポートするためのPL/SQLプロシージャを生成

    2. 例を使用したOracleの一意キー

    3. date_trunc()がPostgreSQLでどのように機能するか

    4. パーティショニングによるパフォーマンス上の利点の発見