Sql вычесть дату из даты
Формат даты и времени
Формат даты MySQL поддерживает несколько форматов даты и времени. Их можно определить следующим образом:
ДАТА — сохраняет значение даты в формате ГГГГ-ММ-ДД. Например, 23.10.2008.
DATETIME — сохраняет значение даты и времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС. Например, 2008-10-23 10:37:22. Поддерживаемые дата и время: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59
TIMESTAMP похож на DATETIME с некоторыми отличиями в зависимости от версии MySQL и режима, в котором работает сервер.
Создание полей даты и времени
Таблица, содержащая типы данных DATE и DATETIME, создается так же, как и другие столбцы. Например, мы можем создать новую таблицу под названием Заказы, которая содержит столбцы для номера заказа, заказанного товара, даты заказа и даты доставки заказа:
Столбец ORDER_DATE — это поле MySQL DATE TIME, в котором мы записываем дату и время, когда был размещен заказ. Невозможно предсказать точное время для даты доставки, поэтому мы записываем только дату.
Форматы даты и времени
Чаще всего для обозначения дат используются дефис (-) и двоеточие (:), обозначающие часы. Но мы можем использовать любой символ или не добавлять символы.
Например, допустимы все следующие форматы:
Функции даты и времени
MySQL содержит множество функций, которые используются для управления датой и временем. В следующей таблице представлен список наиболее часто используемых функций:
| Функция | Описание |
| ДОБАВИТЬ() | Добавить дату. |
| ВРЕМЯ ДОБАВЛЕНИЯ() | Это добавляет время. |
| CONVERT_TZ() | Преобразование из одного часового пояса в другой. |
| КОРДАТО() | Возвращает текущую дату. |
| CURTIME() | Возвращает текущее системное время. |
| DATE_ADD() | Добавьте одну дату к другой. |
| MySQL DATE_FORMAT () | Устанавливает указанный формат даты. |
| ДАТА() | Извлекает часть даты из выражения даты или даты и времени. |
| ДАТАДИФ() | Вычтите одну дату из другой. |
| ИМЯ ДНЯ() | Возвращает день недели. |
| ДЕНЬ МЕСЯЦА() | Возвращает день месяца (1-31). |
| ДЕНЬ НЕДЕЛИ() | Возвращает индекс дня недели из аргумента. |
| ДЕНЬ ГОДА() | Возвращает день года (1-366). |
| ИЗВЛЕКАТЬ | Получить часть даты. |
| НЕСКОЛЬКО ДНЕЙ() | Преобразует номер дня в дату. |
| FROM_UNIXTIME() | Задает формат даты UNIX. |
| MySQL DATE_SUB () | Вычтите одну дату из другой. |
| ТЕПЕРЬ() | Получить час. |
| ПОСЛЕДНИЙ ДЕНЬ | Возвращает последний день месяца для темы. |
| ДАТА ОКОНЧАНИЯ() | Создайте дату из одного года и одного дня в году. |
| ДЕЛАТЬ ВРЕМЯ () | Возвращает значение времени. |
| МИКРОСЕКУНДА() | Возвращает миллисекунды из аргумента. |
| МИНУТА() | Возвращает минуты из аргумента. |
| МЕСЯЦ() | Возвращает месяц с прошедшей даты. |
| НАЗВАНИЕ МЕСЯЦА() | Возвращает название месяца. |
| ТЕПЕРЬ() | Возвращает текущую дату и время. |
| ДОБАВИТЬ_ ПЕРИОД() | Добавляет диапазон к месяцу-году. |
| PERIOD_DIFF() | Возвращает количество месяцев между двумя периодами. |
| ЧЕТВЕРТЬ() | Возвращает четверть часа от прошедшей даты в качестве аргумента. |
| SEC_TO_TIME() | Преобразуйте секунды в формат «ЧЧ: ММ: СС’. |
| В СООТВЕТСТВИИ С() | Возвращает второй (0-59). |
| MySQL STR_TO_DATE () | Преобразуйте строку в дату. |
| ДОПОЛНИТЕЛЬНОЕ ВРЕМЯ() | Это отнимает время. |
| СИСТЕМА() | Возвращает время выполнения функции. |
| ФОРМАТ ВРЕМЕНИ() | Установите формат времени. |
| TIME_TO_SEC() | Возвращает аргумент, преобразованный в секундах. |
| ПОГОДА() | Выберите в качестве аргумента долю времени из переданного выражения. |
| ДИФФЕРЕНЦИАЛЬНЫЙ() | Это отнимает время. |
| ЧАСЫ() | С одним аргументом эта функция возвращает дату или выражение даты и времени. Сумма аргументов возвращается с двумя аргументами. |
| TIMESTAMPADD() | Добавляет интервал к datetime. |
| TIMESTAMPDIFF() | Вычитает диапазон из даты и времени. |
| СЕГОДНЯ() | Возвращает аргумент даты, преобразованный в дни. |
| UNIX_TIMESTAMP() | Получает дату и время UNIX в формате MySQL. |
| DATA_UTC() | Возвращает текущую дату в формате UTC). |
| ORA_UTC() | Возвращает текущее время в формате UTC). |
| UTC_TIMESTAMP() | Возвращает текущую дату и время в формате UTC). |
| НЕДЕЛЯ() | Возвращает номер недели. |
| ЕЖЕНЕДЕЛЬНЫЙ ДЕНЬ() | Возвращает индекс дня недели. |
| НЕДЕЛЯ ГОД() | Возвращает календарную неделю даты (1-53). |
| ГОД() | Возвращает год. |
| ГОД НЕДЕЛЯ() | Возвращает год и неделю. |
Вы можете поэкспериментировать с этими функциями формата даты MySQL, даже не вводя никаких данных в таблицу. Например:
Вы можете попробовать объединить несколько функций в один запрос (например, чтобы найти день недели):
mysql> ВЫБРАТЬ ИМЯ МЕСЯЦА (ВРЕМЯ());
Внесение значений даты и времени в столбцы таблицы
Давайте посмотрим, как значения даты MySQL вставляются в таблицу. Чтобы продемонстрировать это, мы продолжим использовать таблицу заказов, которую мы создали в начале статьи.
Начнем с добавления новой строки заказа. Поле order_no будет автоматически увеличиваться на 1, поэтому нам просто нужно ввести значения order_item, дату создания заказа и дату доставки. Дата заказа — это время размещения заказа, поэтому мы можем использовать функцию NOW (), чтобы заполнить строку текущими датой и временем.
Дата доставки — это период времени после даты заказа, который мы можем вернуть с помощью функции MySQL DATE_ADD (), которая принимает дату начала (в нашем случае СЕЙЧАС ()) и ИНТЕРВАЛ (в нашем случае 14 дней). Например:
Этот запрос создает заказ для указанного товара с датой, временем выполнения и двумя неделями позже в качестве даты доставки:
Точно так же вы можете заказать товар со сроком доставки через два месяца.






