MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak SUBDATE() działa w MariaDB

W MariaDB, SUBDATE() to wbudowana funkcja daty i czasu, która odejmuje kwotę od podanej daty.

Pozwala zmienić datę, określając datę, jednostkę do odjęcia i kwotę do odjęcia. Możesz przekazać kwotę ujemną, aby dodać do daty, zamiast odejmowania od niej.

SUBDATE() ma również składnię skrótów, która pozwala określić dni do odjęcia.

Składnia

SUBDATE() funkcja ma dwie składnie.

Składnia 1:

SUBDATE(expr,days)

Gdzie expr to data i days to liczba dni do odjęcia.

Składnia 2:

SUBDATE(date,INTERVAL expr unit)

Gdzie date to data do zmiany, expr to kwota do odjęcia, a unit jest jednostką daty/czasu do odjęcia (np. sekunda, minuta itp.).

Używając tej składni, SUBDATE() jest synonimem DATE_SUB() .

Przykład — składnia 1

Oto przykład użycia pierwszej składni:

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

Wynik:

+--------------------------+
| SUBDATE('2021-05-01', 1) |
+--------------------------+
| 2021-04-30               |
+--------------------------+

W razie potrzeby możemy również uwzględnić część czasu:

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

Wynik:

+-----------------------------------+
| SUBDATE('2021-05-01 10:00:00', 1) |
+-----------------------------------+
| 2021-04-30 10:00:00               |
+-----------------------------------+

Oto dwa alternatywne sposoby zrobienia tego samego:

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

Wynik:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-04-30 10:00:00 | 2021-04-30 10:00:00 |
+---------------------+---------------------+

Przykład — składnia 2

Oto przykład użycia drugiej składni:

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

Wynik:

+-------------------------------------------------+
| SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) |
+-------------------------------------------------+
| 2021-05-31 09:00:00                             |
+-------------------------------------------------+

Ta składnia pozwala nam odjąć inne jednostki od daty (tj. Nie tylko dni). Tutaj odjąłem godzinę od daty, ale równie dobrze mogłem odjąć minuty, sekundy, miesiące, dni, lata itd. Przykłady później.

Oto dwie alternatywne metody osiągnięcia tego samego wyniku, co w powyższym przykładzie:

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

Wynik:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-05-31 09:00:00 | 2021-05-31 09:00:00 |
+---------------------+---------------------+

Przedziały ujemne

Zapewnienie ujemnego przedziału dodaje tę kwotę do dnia dzisiejszego.

Przykład:

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

Wynik:

+--------------------------------------------------+
| SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) |
+--------------------------------------------------+
| 2021-05-31 11:00:00                              |
+--------------------------------------------------+

Inne jednostki

Oto przykład, który odejmuje interwał równy 1 od różnych jednostek daty i czasu:

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

Wynik (przy użyciu wyjścia pionowego):

       YEAR: 2020-05-01 10:00:00
      MONTH: 2021-04-01 10:00:00
        DAY: 2021-04-30 10:00:00
       HOUR: 2021-05-01 09:00:00
     MINUTE: 2021-05-01 09:59:00
     SECOND: 2021-05-01 09:59:59
MICROSECOND: 2021-05-01 09:59:59.999999

Jednostki złożone

Oto przykład wykorzystujący jednostki złożone:

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

Wynik:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 |
+---------------------+---------------------+---------------------+

Daty zerowe

Przekazywanie null dla daty zwraca null :

SELECT SUBDATE(null, INTERVAL 1 YEAR);

Wynik:

+--------------------------------+
| SUBDATE(null, INTERVAL 1 YEAR) |
+--------------------------------+
| NULL                           |
+--------------------------------+

Brakujący argument

Wywołanie SUBDATE() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:

SELECT SUBDATE();

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pierwsze kroki z ProxySQL — samouczek dotyczący równoważenia obciążenia MySQL i MariaDB

  2. Jak ustawić MariaDB tak, aby używała wyjścia pionowego?

  3. Jak działa POKAŻ UKŁADANIE w MariaDB

  4. Dziesięć wskazówek, jak osiągnąć bezpieczeństwo MySQL i MariaDB

  5. Zwróć losowe wiersze z tabeli w MariaDB