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

Wie ADDDATE() in MariaDB funktioniert

In MariaDB ADDDATE() ist eine integrierte Datums- und Zeitfunktion, die Datumsarithmetik durchführt.

Sie können ein Datum ändern, indem Sie das Datum, die hinzuzufügende Einheit und den hinzuzufügenden Betrag angeben. Sie können einen negativen Betrag übergeben, wenn Sie das Datum um ein bestimmtes Intervall subtrahieren müssen.

ADDDATE() verfügt auch über eine Abkürzungssyntax, mit der Sie dem Datum eine bestimmte Anzahl von Tagen hinzufügen können.

Syntax

Das ADDDATE() Funktion hat zwei Syntaxen.

Syntax 1:

ADDDATE(expr,days) 

Wobei expr ist das Datum und days ist die Anzahl der hinzuzufügenden Tage.

Syntax 2:

ADDDATE(date,INTERVAL expr unit) 

Wobei date ist das zu ändernde Datum, expr ist der hinzuzufügende Betrag und unit ist die hinzuzufügende Einheit (z. B. Sekunde, Minute usw.).

Bei Verwendung dieser Syntax ADDDATE() ist ein Synonym für DATE_ADD() .

Beispiel – Syntax 1

Hier ist ein Beispiel für die Verwendung der ersten Syntax:

SELECT ADDDATE('2021-05-01', 1); 

Ergebnis:

+---------------------+| HINZUFÜGEN('2021-05-01', 1) |+---------------------+| 2021-05-02 |+---------------------+

Bei Bedarf können wir auch den Zeitanteil einbeziehen:

SELECT ADDDATE('2021-05-01 10:00:00', 1); 

Ergebnis:

+-----------------------------------+| HINZUFÜGEN('2021-05-01 10:00:00', 1) |+------------------------------- ----+| 2021-05-02 10:00:00 |+-----------------------------------+ 

Hier sind zwei alternative Möglichkeiten, dasselbe zu tun:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2"; 

Ergebnis:

+---------------------+---------------------+| Ergebnis 1 | Ergebnis 2 |+---------------------+---------------------+| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |+---------------------+---------------- -----+

Beispiel – Syntax 2

Hier ist ein Beispiel für die Verwendung der zweiten Syntax:

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

Ergebnis:

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

Diese Syntax ermöglicht es uns, dem Datum andere Einheiten hinzuzufügen (d. h. nicht nur die Tage). Hier habe ich dem Datum eine Stunde hinzugefügt, aber ich hätte genauso gut Minuten, Sekunden, Monate, Tage, Jahre usw. hinzufügen können. Lesen Sie weiter für Beispiele.

Hier sind zwei alternative Methoden, um das gleiche Ergebnis wie im obigen Beispiel zu erzielen:

SELECT 
    DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2"; 

Ergebnis:

+---------------------+---------------------+| Ergebnis 1 | Ergebnis 2 |+---------------------+---------------------+| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |+---------------------+---------------- -----+

Negative Intervalle

Bei Angabe eines negativen Intervalls wird dieser Betrag vom Datum abgezogen.

Beispiel:

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

Ergebnis:

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

Andere Einheiten

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

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

Ergebnis (bei vertikaler Ausgabe):

 JAHR:2022-05-01 10:00:00 MONAT:2021-06-01 10:00:00 TAG:2021-05-02 10:00:00 STUNDE:2021-05-01 11:00:00 MINUTE:2021-05-01 10:01:00 SEKUNDE:2021-05-01 10:00:01 MIKROSEKUNDE:2021-05-01 10:00:00.000001

Zusammengesetzte Einheiten

Hier ist ein Beispiel, das zusammengesetzte Einheiten verwendet:

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

Ergebnis:

+---------------------+---------------------+-- -------------------+| JAHR_MONAT | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.07.2022 10:00:00 | 01.05.2021 11:25:35 | 2021-05-01 11:30:00 |+---------------------+---------------- -----+---------------------+

Nulldaten

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

SELECT ADDDATE(null, INTERVAL 1 YEAR); 

Ergebnis:

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

Fehlendes Argument

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

SELECT ADDDATE(); 

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