sql >> Database >  >> RDS >> MariaDB

Seconden aftrekken van een Datetime-waarde in MariaDB

Hier zijn enkele opties voor het aftrekken van een of meer seconden van een datetime-expressie in MariaDB.

De SUBTIME() Functie

De SUBTIME() trekt een bepaalde hoeveelheid tijd af van een tijd- of datetime-waarde.

Voorbeeld:

SELECT SUBTIME('2021-05-01 10:00:00', '00:00:30');

Resultaat:

+--------------------------------------------+
| SUBTIME('2021-05-01 10:00:00', '00:00:30') |
+--------------------------------------------+
| 2021-05-01 09:59:30                        |
+--------------------------------------------+

U kunt ook de andere tijdseenheden wijzigen, zoals uren, minuten enz.

De DATE_SUB() Functie

De DATE_SUB() Met deze functie kunt u een bepaald aantal datum/tijd-eenheden aftrekken van een datum- of datetime-uitdrukking. Daarom kunnen we deze functie gebruiken om de datetime-waarde te retourneren, minus een bepaald aantal seconden.

Voorbeeld:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 30 SECOND);

Resultaat:

+-----------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL 30 SECOND) |
+-----------------------------------------------------+
| 2021-05-01 09:59:30                                 |
+-----------------------------------------------------+

Merk op dat de SECOND zoekwoord blijft niet-meervoud, ongeacht of u één seconde of meer aftrekt.

U kunt ook samengestelde datum- en tijdseenheden gebruiken. U kunt bijvoorbeeld minuten en seconden in één keer doen.

Voorbeeld:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' MINUTE_SECOND);

Resultaat:

+-----------------------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' MINUTE_SECOND) |
+-----------------------------------------------------------------+
| 2021-05-01 09:44:30                                             |
+-----------------------------------------------------------------+

Alleen de datum doorgeven

Dit is wat er gebeurt als we alleen een datumwaarde geven:

SELECT DATE_SUB('2021-05-01', INTERVAL 30 SECOND);

Resultaat:

+--------------------------------------------+
| DATE_SUB('2021-05-01', INTERVAL 30 SECOND) |
+--------------------------------------------+
| 2021-04-30 23:59:30                        |
+--------------------------------------------+

Het gaat ervan uit dat de tijd begint om 00:00:00, en dus de SECOND het bedrag wordt daarvan afgetrokken.

De aftrekkingsoperator (- )

Een andere manier om een ​​of meer seconden van een datetime-waarde af te trekken, is door de aftrekkingsoperator te gebruiken (- ), ook wel de min-operator genoemd.

Voorbeeld:

SELECT '2021-05-01 10:00:00' - INTERVAL 30 SECOND;

Resultaat:

+--------------------------------------------+
| '2021-05-01 10:00:00' - INTERVAL 30 SECOND |
+--------------------------------------------+
| 2021-05-01 09:59:30                        |
+--------------------------------------------+

De toevoegingsoperator (+ )

U kunt ook de opteloperator gebruiken (+ ) samen met een negatief bedrag.

Voorbeeld:

SELECT '2021-05-01 10:00:00' + INTERVAL -30 SECOND;

Resultaat:

+---------------------------------------------+
| '2021-05-01 10:00:00' + INTERVAL -30 SECOND |
+---------------------------------------------+
| 2021-05-01 09:59:30                         |
+---------------------------------------------+

Andere manieren om seconden af ​​te trekken

Hier zijn enkele andere benaderingen die u zou kunnen gebruiken om een ​​of meer seconden af ​​te trekken van een datetime-waarde:

  • De SUBTIME() functie.
  • De ADDTIME() functie (als u een negatief bedrag opgeeft, wordt dat bedrag afgetrokken van de datetime-waarde).
  • De SUBDATE() functie (dit is een synoniem voor DATE_SUB() wanneer gebruikt met dezelfde syntaxis).
  • De DATE_ADD() functie (als u een negatief bedrag opgeeft, wordt dat bedrag afgetrokken van de datetime-waarde).
  • De ADDDATE() functie (als u een negatief bedrag opgeeft, wordt dat bedrag afgetrokken van de datetime-waarde).

  1. Gegoten van VARCHAR naar INT - MySQL

  2. PostgreSQL-streamingreplicatie versus logische replicatie

  3. De servertijdzonewaarde 'AEST' wordt niet herkend of vertegenwoordigt meer dan één tijdzone

  4. LEFT JOIN alleen eerste rij