Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Операции над датами и временем в SQL

Получение текущих даты и времени

Для получения текущей даты (без времени) в формате YYYY-MM-DD можно использовать функции:

  • CURDATE()
  • CURRENT_DATE()

Для получения текущего времени (без даты) в формате HH:MM:SS можно использовать функции:

  • CURTIME()
  • CURRENT_TIME()

Для получения текущих даты и времени в формате YYYY-MM-DD HH:MM:SS можно использовать любую из следующих функций:

  • NOW()
  • SYSDATE()
  • CURRENT_TIMESTAMP
Пример 1

SELECT CURDATE(); или SELECT CURRENT_DATE();

Результат: 2016-08-28

SELECT CURTIME(); или SELECT CURENT_TIME();

Результат: 19:29:54

SELECT NOW(); или SELECT SYSDATE(); или SELECT CURRENT_TIMESTAMP;

Результат: 2016-08-28 19:29:54

Прибавление и вычитание временного интервала

С датами и временем часто приходится проводить арифметические операции: прибавлять к заданной дате определенный временной интервал или вычитать. Прибавление временного интервала можно осуществить тремя способами:

  • Функция DATE_ADD(исходная_дата, INTERVAL выражение тип);
  • Функция ADDDATE (исходная_дата, INTERVAL выражение тип);
  • Выражение: исходная_дата + INTERVAL выражение тип.

Вычитание временного интервала также можно осуществить тремя способами:

  • Функция DATE_SUB(исходная_дата, INTERVAL выражение тип);
  • Функция SUBDATE (исходная_дата, INTERVAL выражение тип);
  • Выражение: исходная_дата - INTERVAL выражение тип.

Исходная_дата – это дата, к которой прибавляется или вычитается определенный интервал времени. Выражение – это сам прибавляемый или вычитаемый интервал времени, заданный в текстовом формате. Тип – аргумент, указывающий тип прибавляемого интервала. Этот параметр уточняет, как правильно интерпретировать выражение. Например, выражение ‘3:24’ можно интерпретировать и как 3 часа 24 минуты, и как 3 минуты 24 секунды. Если указан тип «MINUTE_SECOND», то интерпретация будет однозначной. Связь между аргументами выражение и тип показана в таблице :

«Операции над датами и временем в SQL» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Операции над датами и временем. Автор24 — интернет-биржа заказчиков и авторов

Пример 2

Следующие три команды делают одну и ту же операцию. Они прибавляют секунду к заданному времени.

SELECT '2016-09-10 23:59:59' + Interval 1 SECOND;

SELECT ADDDATE('2016-09-10 23:59:59', Interval 1 SECOND);

SELECT DATE_ADD('2016-09-10 23:59:59', Interval 1 SECOND);

Результат всех трех команд одинаковый: 2016-09-11 00:00:00.

Пример 3

Следующие три команды вычисляют дату предшествующую заданной ровно на полтора года:

SELECT DATE_SUB('2016-09-10 23:59:59', Interval '1-6' YEAR_MONTH);

SELECT SUBDATE('2016-09-10 23:59:59', Interval '1-6' YEAR_MONTH);

SELECT '2016-09-10 23:59:59' - Interval '1-6' YEAR_MONTH;

Результат всех трех команд одинаковый : 2015-03-10 23:59:59.

Функции перевода в другие единицы

Иногда бывает удобно работать с датой, представленной в виде количества дней прошедших с года 0. Для перевода даты в такой формат и обратно в MySQL существует две функции:

  • TO_DAYS(дата) – возвращает номер дня соответствующего аргументу дата.
  • FROM_DAYS(номер_дня) – возвращает дату в соответствии с номером дня.
Пример 4

SELECT TO_DAYS('2016-09-10');

Результат: 736582.

SELECT FROM_DAYS(736362);

Результат: 2016-02-03.

Замечание 1

Обе функции не следует использовать для работы с датами до 1582 года. Так как при переходе на григорианский календарь были утеряны дни, которые данными функциями не учитываются.

Полезными также могут быть функции для перевода отрезка времени в секунды и обратно.

  • Функция TIME_TO_SEC(отрезок_времени) переводит отрезок времени в секунды.
  • Функция SEC_TO_TIME(секунды) переводит секунды в формат ‘часы:минуты:секунды’.
Пример 5

Следующая команда позволяет узнать, сколько секунд в периоде равном 2 часа, 23 минуты и 2 секунды:

SELECT TIME_TO_SEC('2:23:09');

Результат: 8589.

Чтобы сделать обратное преобразование, нужно выполнить команду:

SELECT SEC_TO_TIME(8589);

Результат: 02:23:09.

Дата написания статьи: 28.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot