W MariaDB, TIMESTAMPADD()
to wbudowana funkcja daty i czasu, która dodaje interwał wyrażenia liczby całkowitej do podanego wyrażenia daty lub czasu.
Składnia
Składnia wygląda tak:
TIMESTAMPADD(unit,interval,datetime_expr)
Gdzie unit
jest jedną z następujących wartości:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Jednostki mogą opcjonalnie mieć przedrostek SQL_TSI_
.
Przykład
Oto przykład do zademonstrowania:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Wynik:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Wartości daty i godziny
Oto przykład przekazywania wartości daty i godziny:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Wynik:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Dodawanie SQL_TSI_
Prefiks
Jednostka może zawierać SQL_TSI_
prefiks, jeśli jest wymagany:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Wynik:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Mikrosekundy
Oto przykład, który dodaje mikrosekundy:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Wynik:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Przedziały ujemne
Ujemne przedziały są prawidłowe:
Przykład:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Wynik:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Aktualna data
Możemy przekazać NOW()
jako argument datetime, aby użyć bieżącej daty i czasu:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Wynik:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Brakujący argument
Wywołanie TIMESTAMPADD()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT TIMESTAMPADD();
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
I kolejny przykład:
SELECT TIMESTAMPADD(10, '2020-12-09');
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 '10, '2020-12-09')' at line 1