Mysql
 sql >> база данни >  >> RDS >> Mysql

SUBTIME() Примери – MySQL

В MySQL можете да използвате SUBTIME() функция за изваждане на стойност за време от израз за време или дата и час.

Начинът, по който работи, е, че предоставяте два аргумента; първата е стойност за час или дата и час, а втората е стойност за време. SUBTIME() функцията след това изважда втория аргумент от първия и връща резултата.

Синтаксис

Синтаксисът е така:

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                       |
+-------------------------------------------+

В този случай частта за дата е непроменена, тъй като вторият аргумент не е достатъчно голям, за да го повлияе.

В този следващ пример увеличавам втория аргумент, така че да е достатъчно голям, за да повлияе на частта с датата.

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 показва предупреждение.

Но това не е само вторият аргумент, с който трябва да внимавате. Също така ще срещнете същия проблем, ако първият аргумент първоначално е отрицателна стойност:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# с параметри на MySQL INSERT

  2. MySQL GROUP BY поведение

  3. PDO fetchAll групови двойки ключ-стойност в асоцииран масив

  4. Сума стойностите на многомерния масив по ключ без цикъл

  5. Как да създадете база данни в MySQL Workbench с помощта на GUI