W MySQL, możesz użyć funkcji DATE_SUB()
aby odjąć określoną ilość czasu od daty. Na przykład, możesz użyć jej do odjęcia 7 dni od danej daty. Możesz określić, czy odjąć dni, tygodnie, miesiące, kwartały, lata, itp. Możesz również odjąć wartość czasu, taką jak sekundy, mikrosekundy itp.
Ta funkcja jest podobna do DATE_ADD()
, z wyjątkiem tego, że odejmuje od daty zamiast dodawać do niej.
Syntaktyka
Składnia wygląda następująco:
DATE_SUB(date,INTERVAL expr unit)
Przykład 1 – Podstawowe użycie
Oto przykład użycia.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Wynik:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Ten przykład odejmuje 5 dni od daty dostarczonej przez pierwszy argument.
Przykład 2 – Inne jednostki daty
Możesz określić jednostki w dniach, tygodniach, miesiącach, latach, itp. Oto kilka przykładów.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Result:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Przykład 3 – Jednostki czasu
Możesz również odjąć jednostki czasu od wartości daty/czasu. Oto przykład.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Wynik:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
Możesz również określić wiele jednostek w tym samym czasie. Na przykład, możesz określić godziny i minuty. Tak jak poniżej.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Result:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Expected Values
Następująca tabela przedstawia prawidłowe wartości jednostek i ich oczekiwany format.
unit Wartość |
Oczekiwana expr Format |
---|---|
MIKROSEKUNDA | MIKROSEKUNDY |
SEKUNDA | SEKUNDY |
MINUTA | MINUTY |
GODZINA | GODZINY |
DOBA | DNI |
TYDZIEŃ | TYGODNIE |
MIESIĄC | MIESIĄCE |
QUARTER | KWARTAŁY |
YEAR | ROK |
SECOND_MICROSECOND | ’SECONDS.MICROSECONDS’ |
MINUTE_MICROSECOND | ’MINUTES:SECONDS.MICROSECONDS’ |
MINUTE_SECOND | ’MINUTES:SECONDS’ |
HOUR_MICROSECOND | ’HOURS:MINUTES:SECONDS.MICROSECONDS’ |
HOUR_SECOND | ’HOURS:MINUTES:SECONDS’ |
HOUR_MINUTE | ’HOURS:MINUTES’ |
DAY_MICROSECOND | ’DAYS HOURS:MINUTES:SECONDS.MIKROSEKUND’ |
DAY_SECOND | ’DAYS HOURS:MINUTES:SECONDS’ |
DAY_MINUTE | ’DAYS HOURS:MINUTY’ |
DAY_HOUR | ’DAYS HOURS’ |
YEAR_MONTH | ’YEARS-.MONTHS’ |
Możesz również użyć funkcji SUBDATE()
, aby zrobić to samo (jest to synonim funkcji DATE_SUB()
, gdy używasz tej samej składni).
W dodatku, składnia SUBDATE()
ma drugą postać, która jest skrótową metodą odejmowania pewnej liczby dni od daty. Aby uzyskać więcej informacji, zobacz SUBDATE() Przykłady w MySQL.