MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie DATE_SUB() in MariaDB funktioniert

In MariaDB, DATE_SUB() ist eine integrierte Datums- und Uhrzeitfunktion, mit der Sie einen Betrag von einem Datum abziehen können.

Sie können ein Datum ändern, indem Sie das Datum, die zu subtrahierende Einheit und den zu subtrahierenden Betrag angeben. Sie können einen negativen Betrag übergeben, um das Datum zu addieren, anstatt es zu subtrahieren.

Syntax

Die Syntax sieht so aus:

DATE_SUB(date,INTERVAL expr unit) 

Wobei date ist das zu ändernde Datum, expr ist der zu subtrahierende Betrag und unit ist die zu subtrahierende Datums-/Zeiteinheit (z. B. Sekunde, Minute usw.).

Beispiel

Hier ist ein einfaches Beispiel:

SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR); 

Ergebnis:

+---------------------------------------------- ----+| DATE_SUB('2021-05-31 10:00:00', INTERVALL 1 STUNDE) |+------------------------------------- ---------------------+| 2021-05-31 09:00:00 |+--------------------------------------------------- -------------+

Das ist wie das Folgende:

SELECT '2021-05-31 10:00:00' - INTERVAL 1 HOUR; 

Ergebnis:

+------------------------------------+| '2021-05-31 10:00:00' - INTERVALL 1 STUNDE |+--------------------------------------------- ---------+| 2021-05-31 09:00:00 |+--------------------------------------------------- ---+

Negative Intervalle

Die Bereitstellung eines negativen Intervalls addiert dieser Betrag ab dem Datum.

Beispiel:

SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR); 

Ergebnis:

+---------------------------------------------- -----+| DATE_SUB('2021-05-31 10:00:00', INTERVALL -1 STUNDE) |+----------------------- -----------------------+| 2021-05-31 11:00:00 |+------------------------------------- -------------+

Andere Einheiten

Hier ist ein Beispiel, das den verschiedenen Datums- und Zeiteinheiten ein Intervall von 1 hinzufügt:

SELECT 
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 DAY) AS DAY,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND; 

Ergebnis (bei vertikaler Ausgabe):

 JAHR:2020-05-10 10:00:00 MONAT:2021-04-10 10:00:00 TAG:2021-05-09 10:00:00 STUNDE:2021-05-10 09:00:00 MINUTE:2021-05-10 09:59:00 ZWEITE:2021-05-10 09:59:59 MIKROSEKUNDE:2021-05-10 09:59:59.999999

Zusammengesetzte Einheiten

Hier ist ein Beispiel, das zusammengesetzte Einheiten verwendet:

SELECT 
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE"; 

Ergebnis:

+---------------------+---------------------+-- -------------------+| JAHR_MONAT | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.03.2020 10:00:00 | 01.05.2021 08:34:25 | 2021-05-01 08:30:00 |+---------------------+---------------- -----+---------------------+

Nulldaten

Übergabe von null für das Datum gibt null zurück :

SELECT DATE_SUB(null, INTERVAL 1 YEAR); 

Ergebnis:

+---------------------------------+| DATE_SUB(Null, INTERVALL 1 JAHR) |+----------------------------------------------+| NULL |+---------------------------------------------+

Fehlendes Argument

Aufruf von DATE_SUB() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT DATE_SUB(); 

Ergebnis:

ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden