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)