Marcin Mazureknarzędzia online · artykuły · księgarniaRSS

Mysql - Odejmowanie daty i czasu

Bardzo często musimy wykonać zapytanie SQL, w którym chcielibyśmy użyć daty przeszłej. Na przykład potrzebujemy usunąć wszystkie rekordy starsze niż 7 dni. Wtedy przykładowo codziennie o godzinie 01:30 (cron), odpalamy skrypt (bash z zapytaniem SQL) z zapytaniem SQL.

Aby odjąć datę od teraz należy użyć funkcji:
DATE_SUB().

DATE_SUB(obecna_data, wyrażenie).

Na przykład:
Data wejściowa według której będą robione wyliczenia to: 2014-09-11 14:08:16

Odejmowanie 1 minuty od dzisiejszej daty
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE);
>2014-09-11 14:07:16

Odejmowanie 1 godziny od dzisiejszej daty
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);
>2014-09-11 13:08:16

Odejmowanie 7 dni od dzisiejszej daty
SELECT DATE_SUB(NOW(), INTERVAL 7 day);
>2014-09-04 14:08:16

Odejmowanie pół roku (6 miesięcy) od dzisiejszej daty
SELECT DATE_SUB(NOW(), INTERVAL 6 MONTH);
>2014-03-11 14:08:16

Tablica wyrażeń, według której można odpowiednio modyfikować zapytanie SQL.
value expr
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
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.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'

Mysql - Odejmowanie daty i czasu w formacie timestamp

Zobacz również