Функции NOW(), SYSDATE(), CURRENT_TIMESTAMP() возвращают текущую локальную
дату и время на основе системных часов в виде объекта datetime. Все три функции возвращают одинаковый результат
UTC_DATE возвращает текущую локальную дату относительно GMT
SELECT UTC_DATE(); -- 2020-05-25
UTC_TIME возвращает текущее локальное время относительно GMT
SELECT UTC_TIME(); -- 17:47:45
Парсинг даты и времени
DAYOFMONTH(date) возвращает день месяца в виде числового значения
DAYOFWEEK(date) возвращает день недели в виде числового значения
DAYOFYEAR(date) возвращает номер дня в году
MONTH(date) возвращает месяц даты
YEAR(date) возвращает год из даты
QUARTER(date) возвращает номер квартала года
WEEK(date [, first]) возвращает номер недели года. Необязательный параметр позволяет задать стартовый день недели. Если этот параметр равен 1, то первым
днем считается понедельник, иначе воскресенье
LAST_DAY(date) возвращает последний день месяца в виде даты
DAYNAME(date) возвращает название дня недели
MONTHNAME(date) возвращает название текущего месяца
HOUR(time) возвращает час времени
MINUTE(time) возвращает минуту времени
SECOND(time) возвращает секунду времени
Примеры функций:
Функция
Результат
DAYOFMONTH('2020-05-25')
25
DAYOFWEEK('2020-05-25')
6
DAYOFYEAR('2020-05-25')
145
MONTH('2020-05-25')
5
YEAR('2020-05-25')
2020
QUARTER('2020-05-25')
2
WEEK('2020-05-25', 1)
21
LAST_DAY('2020-05-25')
2020-05-31
DAYNAME('2020-05-25')
Friday
MONTHNAME('2020-05-25')
May
HOUR('21:25:54')
21
MINUTE('21:25:54')
25
SECOND('21:25:54')
54
Функция EXTRACT
Функция EXTRACT извлекает из даты и времени какой-то определенный компонент. Ее формальный синтаксис:
EXTRACT(unit FROM datetime)
Значение datetime представляет исходную дату и (или) время, а значение unit указывает, какой компонент даты или времени будет извлекаться.
Параметр unit может представлять одно из следующих значений:
SECOND (секунды)
MINUTE (минуты)
HOUR (час)
DAY (день)
MONTH (месяц)
YEAR (год)
MINUTE_SECOND (минуты и секунды)
HOUR_MINUTE (часы и минуты)
DAY_HOUR (день и часы)
YEAR_MONTH (год и месяц)
HOUR_SECOND (часы, минуты и секунды)
DAY_MINUTE (день, часы и минуты)
DAY_SECOND (день, чаы, минуты и секунды)
Примеры вызова функции:
Вызов
Результат
EXTRACT( SECOND FROM '2020-05-25 21:25:54')
54
EXTRACT( MINUTE FROM '2020-05-25 21:25:54')
25
EXTRACT( HOUR FROM '2020-05-25 21:25:54')
21
EXTRACT( DAY FROM '2020-05-25 21:25:54')
25
EXTRACT( MONTH FROM '2020-05-25 21:25:54')
5
EXTRACT( YEAR FROM '2020-05-25 21:25:54')
2020
EXTRACT( MINUTE_SECOND FROM '2020-05-25 21:25:54')
2554
EXTRACT( DAY_HOUR FROM '2020-05-25 21:25:54')
2521
EXTRACT( YEAR_MONTH FROM '2020-05-25 21:25:54')
202005
EXTRACT( HOUR_SECOND FROM '2020-05-25 21:25:54')
212554
EXTRACT( DAY_MINUTE FROM '2020-05-25 21:25:54')
252125
EXTRACT( DAY_SECOND FROM '2020-05-25 21:25:54')
25212554
Функции для манипуляции с датами
Ряд функций позволяют производить операции сложения и вычитания с датами и временем:
DATE_ADD(date, INTERVAL expression unit) возвращает объект DATE или DATETIME, который является результатом сложения
даты date с определенным временным интервалом. Интервал задается с помощью выражения INTERVAL expression unit, где INTERVAL
предоставляет ключевое слово, expression - количество добавляемых к дате единиц, а unit - тип единиц (часы, дни и т.д.)
Параметр unit может иметь те же значения, что и в функции EXTRACT, то есть DAY, HOUR и т.д.
DATE_SUB(date, INTERVAL expression unit) возвращает объект DATE или DATETIME, который является результатом вычитания
из даты date определенного временного интервала
DATEDIFF(date1, date2) возвращает разницу в днях между датами date1 и date2
TO_DAYS(date) возвращает количество дней с 0-го года
TIME_TO_SEC(time) возвращает количество секунд, прошедших с момента полуночи
Примеры применения:
Вызов
Результат
DATE_ADD('2020-05-25', INTERVAL 1 DAY)
2020-05-26
DATE_ADD('2020-05-25', INTERVAL 3 MONTH)
2020-08-25
DATE_ADD('2020-05-25 21:31:27', INTERVAL 4 HOUR)
2020-05-26 01:31:27
DATE_SUB('2020-05-25', INTERVAL 4 DAY)
2020-05-21
DATEDIFF('2020-05-25', '2020-05-27')
-2
DATEDIFF('2020-05-25', '2020-05-21')
4
DATEDIFF('2020-05-25', '2020-03-21')
65
TO_DAYS('2020-05-25')
737204
TIME_TO_SEC('10:00')
36000
Форматирование дат и времени
Вызов
Результат
DATE_FORMAT('2020-05-25', '%d/%m/%y')
25/05/18
DATE_FORMAT('2020-05-25 21:25:54', '%d %M %Y')
25 May 2020
DATE_FORMAT('2020-05-25 21:25:54', '%r')
09:25:54 PM
TIME_FORMAT('2020-05-25 21:25:54', '%H:%i:%S')
21:25:24
TIME_FORMAT('21:25:54', '%k:%i')
21:25
DATE_FORMAT(date, format) возвращает объект DATE или DATETIME, отформатированный с помощью шаблона format
TIME_FORMAT(date, format) возвращает объект TIME или DATETIME, отформатированный с помощью шаблона format
Обе функции в качестве второго параметра принимают строку форматирования или шаблон, который показывает, как оформатировать значение. Этот шаблон может
принимать следующие значения:
%m: месяц в числовом формате 01..12
%с: месяц в числовом формате 1..12
%M: название месяца (January...December)
%b: аббревиатура месяца (Jan...Dec)
%d: день месяца в числовом формате 00..31
%e: день месяца в числовом формате 0..31
%D: номер дня месяца с суффиксом (1st, 2nd, 3rd...)
%y: год в виде двух чисел
%Y: год в виде четырех чисел
%W: название дня недели (Sunday...Saturday)
%a: аббревиатура дня недели (Sun...Sat)
%H: час в формате 00..23
%k: час в формате 0..23
%h: час в формате 01..12
%l: час в формате 1..12
%i: минуты в формате 00..59
%r: время в 12-ти часовом формате (hh:mm:ss AM или PM)