Команда INTERVAL
Команда INTERVAL позволяет прибавлять
к дате и отнимать от нее определенные промежутки
времени.
После команды INTERVAL можно указывать определенную
часть даты (день, месяц или год и тп), к
примеру, так INTERVAL 1 DAY
или INTERVAL 3 MONTH, или сразу
несколько частей.
В этом случае значения даты берутся в кавычки,
пример: давайте прибавим 1 год и 3
месяца - это будет выглядеть так: INTERVAL
'1-3' YEAR_MONTH.
Мы указываем, что хотим год и месяц (вот так: YEAR_MONTH), и перед этим в кавычках пишем сначала значение для года, потом значение для месяца. Между ними ставим разделитель (он может быть абсолютно любым).
Синтаксис
Прибавление даты:
SELECT date_field + INTERVAL interval_value FROM table_name WHERE condition
Отнимание даты:
SELECT date_field - INTERVAL interval_value FROM table_name WHERE condition
Команды
| Команда | Описание |
|---|---|
| SECOND | Секунды |
| MINUTE | Минуты |
| HOUR | Часы |
| DAY | Дни |
| MONTH | Месяцы |
| YEAR | Годы |
| MINUTE_SECOND | Минуты и секунды |
| HOUR_MINUTE | Часы и минуты |
| DAY_HOUR | Дни и часы |
| YEAR_MONTH | Годы и месяцы |
| HOUR_SECOND | Часы, минуты и секунды |
| DAY_MINUTE | Дни, часы и минуты |
| DAY_SECOND | Дни, часы, минуты и секунды |
Таблицы для примеров
| id | name | datetime_field |
|---|---|---|
| 1 | event 1 | 2010-03-01 12:40:50 |
| 2 | event 2 | 2011-04-02 13:41:51 |
| 3 | event 3 | 2012-05-03 14:42:52 |
Пример
Давайте при выборке из таблицы
прибавим к дате 1 день:
SELECT *, datetime_field + INTERVAL 1 DAY AS new_date FROM events
Результат выполнения кода:
| id | name | datetime_field | new_date |
|---|---|---|---|
| 1 | event 1 | 2010-03-01 12:40:50 | 2010-03-02 12:40:50 |
| 2 | event 2 | 2011-04-02 13:41:51 | 2011-04-03 13:41:51 |
| 3 | event 3 | 2012-05-03 14:42:52 | 2012-05-04 14:42:52 |
Пример
Давайте отнимем от даты 1 день:
SELECT *, datetime_field - INTERVAL 1 DAY AS new_date FROM events
Результат выполнения кода:
| id | name | datetime_field | new_date |
|---|---|---|---|
| 1 | event 1 | 2010-03-01 12:40:50 | 2010-02-28 12:40:50 |
| 2 | event 2 | 2011-04-02 13:41:51 | 2011-04-01 13:41:51 |
| 3 | event 3 | 2012-05-03 14:42:52 | 2012-05-02 14:42:52 |
Пример
Давайте прибавим к дате 1 год и 2 месяца:
SELECT *, datetime_field + INTERVAL '1-2' YEAR_MONTH AS new_date FROM events
Результат выполнения кода:
| id | name | datetime_field | new_date |
|---|---|---|---|
| 1 | event 1 | 2010-03-01 12:40:50 | 2011-05-01 12:40:50 |
| 2 | event 2 | 2011-04-02 13:41:51 | 2012-06-02 13:41:51 |
| 3 | event 3 | 2012-05-03 14:42:52 | 2013-07-03 14:42:52 |