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)