W MySQL możesz użyć SUBDATE()
funkcja odejmowania określonej ilości czasu od daty. Na przykład możesz go użyć, aby odjąć 10 dni od podanej daty. Możesz określić, czy odejmować dni, tygodnie, miesiące, kwartały, lata itp. Możesz także odjąć wartość czasu, taką jak sekundy, mikrosekundy itp.
Używając pierwszej składni wymienionej poniżej, SUBDATE()
funkcja jest synonimem DATE_SUB()
funkcja (podobnie jak ADDDATE()
jest synonimem DATE_ADD()
używając tej samej składni).
Składnia
Możesz użyć tej funkcji na dwa sposoby:
SUBDATE(date,INTERVAL expr unit)
Lub
SUBDATE(expr,days)
Przykład 1 – Pierwsza składnia
Oto przykład użycia pierwszej formy składni.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Wynik:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
W tym przykładzie odejmuje się 2 dni od daty podanej w pierwszym argumencie.
Przykład 2 – Druga składnia
Ten przykład można przepisać w następujący sposób:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Wynik:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Używa drugiej formy składni. Drugi argument to liczba całkowita reprezentująca, ile dni należy odjąć od daty podanej przez pierwszy argument.
Jak wspomniano, SUBDATE()
jest synonimem DATE_SUB()
, ale tylko wtedy, gdy używana jest pierwsza składnia. Druga składnia jest dostępna tylko w SUBDATE()
.
Przykład 3 – Inne jednostki daty
Jedną z zalet pierwszej formy składni jest to, że możesz określić, czy odejmować dni, tygodnie, miesiące, lata itp. Oto kilka przykładów.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Wynik:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Przykład 4 – Jednostki czasu
Możesz także użyć SUBDATE()
aby odjąć jednostki czasu od wartości daty/czasu. Oto przykład.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Wynik:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00:00 | +---------------------+
Oczekiwane wartości
Poniższa tabela przedstawia prawidłowe wartości jednostek i ich oczekiwany format.
unit Wartość | Oczekiwano expr Format |
---|---|
MIKROSEKUNDA | MIKROSEKUNDY |
DRUGA | SEKUND |
MINUTA | MINUT |
GODZINA | GODZINY |
DZIEŃ | DNI |
TYDZIEŃ | TYGODNIE |
MIESIĄC | MIESIĄCE |
KWARTAŁ | KWARTAŁ |
ROK | LAT |
SECOND_MICROSECOND | „SEKUND.MIKROSEKUNDY” |
MINUTE_MICROSECOND | „MINUTY:SEKUND.MIKROSEKUNDY” |
MINUTE_SECOND | „MINUTY:SEKUNDY” |
HOUR_MICROSECOND | „GODZINY:MINUTY:SEKUND.MIKROSEKUNDY” |
HOUR_SECOND | „GODZINY:MINUTY:SEKUNDY” |
GODZINA_MINUTA | „GODZINY:MINUTY” |
DAY_MICROSECOND | „DNI GODZINY:MINUTY:SEKUND.MIKROSEKUNDY” |
DAY_SECOND | „DNI GODZINY:MINUTY:SEKUNDY” |
DAY_MINUTE | „DNI GODZINY:MINUTY” |
DAY_HOUR | „DNI GODZINY” |
ROK_MIESIĄC | „LATA-MIESIĄCE” |