sql >> Database >  >> RDS >> Mysql

SUBTIME() Voorbeelden – MySQL

In MySQL kunt u de SUBTIME() . gebruiken functie om een ​​tijdwaarde af te trekken van een tijd- of datetime-expressie.

De manier waarop het werkt is, je geeft twee argumenten; de eerste is een tijd- of datetime-waarde en de tweede is een tijdwaarde. De SUBTIME() functie trekt dan het tweede argument van het eerste af en geeft het resultaat terug.

Syntaxis

De syntaxis gaat als volgt:

SUBTIME(expr1,expr2)

Waar expr1 kan een tijd- of datetime-expressie zijn, en expr2 is een tijduitdrukking.

En dus expr2 wordt afgetrokken van expr1 .

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

Voorbeeld 2 – Seconden aftrekken

In dit voorbeeld trek ik ook een aantal seconden af ​​van de tijdwaarde.

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

Resultaat:

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

En we krijgen hetzelfde resultaat, zelfs als we het secondengedeelte van het initiële tijdargument weglaten.

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

Resultaat:

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

Voorbeeld 3 – Fractionele seconden

U kunt ook het gedeelte van de fractie van seconden aftrekken.

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

Resultaat:

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

Voorbeeld 4 – Negatieve resultaten

Het is heel terecht om een ​​negatieve waarde voor je resultaat te krijgen.

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

Resultaat:

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

Voorbeeld 5 – Aftrekken van een Datetime-waarde

In dit voorbeeld trek ik af van een datetime-waarde (in tegenstelling tot alleen een tijdwaarde zoals in de vorige voorbeelden).

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

Resultaat:

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

In dit geval was het datumgedeelte ongewijzigd, omdat het tweede argument niet groot genoeg was om het te beïnvloeden.

In dit volgende voorbeeld verhoog ik het tweede argument zodat het groot genoeg is om het datumgedeelte te beïnvloeden.

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

Resultaat:

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

Zoals te zien is in dit voorbeeld, zijn tijdwaarden niet beperkt tot minder dan 24 uur (ze kunnen variëren van -838:59:59 naar 838:59:59 .

U kunt echter ook dit soort dingen doen:

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

Resultaat:

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

Voorbeeld 6 – Beperkingen van de tijdwaarde

Zoals vermeld, kan het tijdgegevenstype variëren van -838:59:59 naar 838:59:59 . Dit betekent dat u niet meer dan dat kunt aftrekken. Het betekent ook dat het resultaat niet buiten dit bereik mag liggen. U kunt dit bijvoorbeeld niet doen:

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

Resultaat:

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

Het resultaat is volledig verkeerd en MySQL geeft een waarschuwing weer.

Maar het is niet alleen het tweede argument waar je voorzichtig mee moet zijn. U zult hetzelfde probleem tegenkomen als het eerste argument aanvankelijk een negatieve waarde is:

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

Resultaat:

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

  1. Conversie mislukt bij het converteren van datum en/of tijd van tekenreeks tijdens het invoegen van datetime

  2. Tekensets en sorteringen in MySQL begrijpen

  3. Voer productanalyses uit met behulp van SQL Server Full-Text Search. Deel 1

  4. Gekoppelde tabellen bijwerken in Access 2016 nadat de backend-database naar een nieuwe locatie is verplaatst