sql >> Databáze >  >> RDS >> Mysql

Příklady SUBTIME() – MySQL

V MySQL můžete použít SUBTIME() funkce k odečtení hodnoty času od výrazu času nebo data a času.

Funguje to tak, že poskytnete dva argumenty; první je hodnota času nebo data a času a druhá je hodnota času. SUBTIME() funkce pak odečte druhý argument od prvního a vrátí výsledek.

Syntaxe

Syntaxe vypadá takto:

SUBTIME(expr1,expr2)

Kde expr1 může být výraz čas nebo datum a čas a expr2 je časový výraz.

A tak expr2 se odečte od expr1 .

Příklad 1 – Základní použití

Zde je příklad k demonstraci.

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

Výsledek:

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

Příklad 2 – Odečítání sekund

V tomto příkladu také odečítám počet sekund od hodnoty času.

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

Výsledek:

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

A dostaneme stejný výsledek, i když vynecháme sekundovou část z počátečního časového argumentu.

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

Výsledek:

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

Příklad 3 – zlomky sekund

Můžete také odečíst část ve zlomcích sekund.

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

Výsledek:

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

Příklad 4 – Negativní výsledky

Skončit se zápornou hodnotou pro váš výsledek je docela platné.

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

Výsledek:

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

Příklad 5 – Odečtení od hodnoty data a času

V tomto příkladu odečítám od hodnoty datetime (na rozdíl od pouhé hodnoty času jako v předchozích příkladech).

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

Výsledek:

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

V tomto případě se část data nezměnila, protože druhý argument nebyl dostatečně velký, aby to ovlivnil.

V tomto dalším příkladu zvětším druhý argument tak, aby byl dostatečně velký, aby ovlivnil část data.

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

Výsledek:

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

Jak je vidět v tomto příkladu, časové hodnoty nejsou omezeny na méně než 24 hodin (mohou se pohybovat od -838:59:59 na 838:59:59 .

Můžete však také dělat věci jako toto:

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

Výsledek:

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

Příklad 6 – Omezení časové hodnoty

Jak již bylo zmíněno, typ časových dat se může pohybovat od -838:59:59 na 838:59:59 . To znamená, že nemůžete odečíst více než to. To také znamená, že výsledek nemůže být mimo tento rozsah. Nemůžete například udělat toto:

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

Výsledek:

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

Výsledek je zcela chybný a MySQL zobrazí varování.

Ale není to jen druhý argument, na který si musíte dát pozor. Na stejný problém narazíte také v případě, že první argument je zpočátku záporná hodnota:

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

Výsledek:

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

  1. Jak najít rozdíl mezi dvěma daty v MySQL

  2. Snímky databáze SQL Server -4

  3. SQL - POKUD EXISTUJE AKTUALIZUJTE JINÉ INSERT INTO

  4. Výkon SQL Serveru TOP IO Query -1