HOUR_SECOND
• INTERVAL '<Количество часов>:<Количество минут>' HOUR_MINUTE
• INTERVAL '<Количество дней> <Количество часов>:<Количество минут>:<Количество секунд>' DAY SECOND
• INTERVAL '<Количество дней> <Количество часов>:<Количество минут>' DAY_MINUTE
• INTERVAL '<Количество дней> <Количество часов>' DAY_HOUR
• INTERVAL '<Количество лет>-<Количество месяцев>' YEAR MONTH
Например, функция ADDDATE('2007-12-12',28) добавляет 28 дней к 12 декабря 2007 г. и возвращает результат 2008-01-09, а функция ADDDATE('2007-12-12',INTERVAL '28 12:30' DAY_MINUTE) добавляет 28 дней, 12 часов и 30 минут к 12 декабря 2007 г. и возвращает результат 2008-01-09 12:30:00.
• DATE_ADD('<Дата или дата и время>','<Временной интервал> ').
Синоним ADDDATE('<Дата или дата и время>','<Временной интервал> ').
• ADDTIME(<Время или дата и время>,<Добавляемое время>).
Функция возвращает сумму своих аргументов. Например, функция ADDTIME ('2007-12-12 12:30:00','15:50:00') добавляет 15 часов 50 минут к 12 часам 30 минутам 12 декабря 2007 г. и возвращает результат 2007-12-13 04:20:00.
• SUBDATE('<Дата или дата и время>',<Количество дней>) или SUBDATE ('<Дата или дата и время>','<Временной интервал>').
Функция SUBDATE() аналогична функции ADDDATE(), только указанное количество дней или указанный временной интервал не добавляются к дате, а вычитаются из нее, иными словами, дата сдвигается в прошлое, а не в будущее. Например, функция SUBDATE('2007-12-12',INTERVAL '28 12:30' DAY_MINUTE) вычитает 28 дней, 12 часов и 30 минут из 12 декабря 2007 г. и возвращает результат 2007-11-13 11:30:00.
• DATE_SUB ('<Дата или дата и время>','<Временной интервал>')
Синоним SUBDATE('<Дата или дата и время>','<Временной интервал>').
• SUBTIME(<Время или дата и время>,<Вычитаемое время>).
Функция возвращает разность своих аргументов. Например, функция SUBTIME('2007-12-12 12:30:00','15:50:00') вычитает 15 часов 50 минут из 12 часов 30 минут 12 декабря 2007 г. и возвращает результат 2007-12-11 20:40:00.
• DATEDIFF('<Дата или дата и время>','<Дата или дата и время>').
Функция DATEDIFF() возвращает разность в днях между первой и второй датой (время при этом не учитывается). Если первая дата предшествует второй, результат будет отрицательным. Например, DATEDIFF('2007-12-12 12:30:00','2007-12-31') возвращает значение –19.
• TIMEDIFF('<Время или дата и время>','<Время или дата и время> ').
Функция TIMEDIFF() возвращает разность своих аргументов в формате времени. Если первый момент предшествует второму, результат будет отрицательным. Например, функция TIMEDIFF('2007-12-12 12:30:00','2007-12-31 15:50:00') возвращает значение –459:20:00. Это означает, что 12 декабря 2007 г. 12 часов 30 минут отстоит в прошлое от 31 декабря 2007 г. 15 часов 50 минут на 459 часов 20 минут.
• PERIOD_ADD(<Период в формате YYMM или YYYYMM>,<Количество месяцев>).
Функция PERIOD_ADD() возвращает результат добавления к указанному периоду указанное количество месяцев. Обратите внимание, что оба аргумента этой функции – числа и возвращаемый результат – также число. Например, PERIOD_ADD(200712,3) возвращает значение 200803, поскольку через три месяца после декабря 2007 г наступит март 2008 г.
• PERIOD_DIFF(<Период в формате YYMM или YYYYMM>,<Период в формате YYMM или YYYYMM>).
Функция PERIOD_DIFF() возвращает разность в месяцах между первым и вторым периодом. Обратите внимание, что оба аргумента этой функции – числа. Например, PERIOD_DIFF(200712,200803) возвращает значение – 3.
• TIMESTAMP('<Дата или дата время>','<Время>').
Функция TIMESTAMP() возвращает сумму своих аргументов в формате даты и времени. Например, функция TIMESTAMP('2007-12- 12 12:30','15:50') добавляет 15 часов 50 минут к 12 часам 30 минутам 12 декабря 2007г. и возвращает результат 2007-12-13 04:20:00.
• TIMESTAMPADD(<Тип периода>,<Длина периода>,<Дата или дата и время>).
Функция TIMESTAMPADD() возвращает дату или дату и время сдвинутые относительно указанной даты на указанный период. Первым аргументом является тип периода:
DAY —число(номерднявмесяце;
WEEK —номернеделивгоду
MONTH — номермесяца
QUARTER —номерквартала
YEAR —номергода
HOUR — часы
MINUTE —минуты
SECOND —секунды
Вторым аргументом является целое число – длина периода, то есть количество единиц измерения, заданных первым параметром. Если длина периода меньше 0, дата, определяемая третьим параметром, будет сдвинута в прошлое.
Например, функция TIMESTAMPADD(HOUR,15,'2007-12-12 12:30:00') добавляет15 часов к 12 часам 30 минутам 12 декабря 2007г. и возвращает результат 2007-12-13 03:30:00.
• TIMESTAMPDIFF(<Тип периода>,<Дата или дата и время>,<Дата или дата и время>).
Функция TIMESTAMPDIFF() возвращает количество указанных периодов, прошедших между первым и вторым моментом. Первый аргумент может приниматьте же значения, что и первый аргумент функции TIMESTAMPADD(). Если вторая дата предшествует первой, результат будет отрицательным. Например, TIMESTAMPDIFF(WEEK, 2007-12-12 12:30:00, 2007-12-31)возвращает значение 2, и это означает, что 12 декабря и 31 декабря 2007 г. разделяют две недели.
В следующем подразделе мы рассмотрим функции, позволяющие переводить даты из одного формата в другой.
Функции преобразования форматов дат
Для преобразования дат из одного формата в другой вы можете использовать следующие основные функции:
• DATE_FORMAT('<Дата или дата и время>', '<Формат>').
Функция DATE_FORMAT() возвращает строку, содержащую дату, преобразованную к указанному формату. Формат может включать следующие основные параметры:
• %a – сокращенное наименование дня недели (Sun, Mon и т. д.). О том, как настроить вывод дат на русском языке («Пнд», «Втр» и т. д.), рассказывалось при описании функции DAYNAME ().
• %b – сокращенное наименование месяца (Jan, Feb и т. д.). О том, как настроить вывод дат на русском языке (Янв, Фев и т. д.), говорилось при описании функции DAYNAME().
• %c – номер месяца (0-12).
• %D – число (номер дня в месяце) с английским суффиксом (0th, 1st, 2nd, и т. д.).
• %d – число месяца (00–31).
• %e – число месяца (0-31).
• %H – часы (00–23).
• %h, %I – часы (01–12).
• %i – минуты (0 0–5 9).
• %j – номер дня в году (0 01-3 6 6).
• %k – часы (0-23).
• %l – часы (1-12).
• %M – наименование месяца (January, February и т. д.). О том, как настроить вывод дат на русском языке (Января, Февраля и т. д.), говорилось при описании функции DAYNAME().
• %m – номер месяца (00–12).
• %p – AM (обозначение первой половины суток) или PM (обозначение второй половины суток).
• %r – время в 12-часовом формате (HH:MM:SS AM или PM).
• %S, %s – секунды (0 0–5 9).
• %T – время в 24-часовом формате (HH:MM:SS).
• %U – номер недели в году (0 0-53), первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен 0.
• %u – номер недели в году (0 0-53), первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен 0.
• %V – номер недели в году (01–53), первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году.
• %v – номер недели в году (01–53), первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году.
• %W – наименование дня недели (Sunday, Monday и т. д.). О том, как настроить вывод дат на русском языке (Понедельник, Вторник и т. д.), было сказано при описании функции DAYNAME().
• %w – номер дня недели (0 – воскресенье, 1 – понедельник и т. д.).
• %X – номер года, к которому относится текущая неделя (первым днем недели считается воскресенье, первая неделя года – целиком находящаяся в этом году, неделя, предшествующая первой неделе года, относится к предыдущему году), в формате YYYY.
• %x – номер года, к которому относится текущая неделя (первым днем недели считается понедельник, первая неделя года – та, более трех дней которой находится в этом году, неделя, предшествующая первой неделе года, относится к предыдущему году), в формате YYYY.
• %Y – номер года в формате YYYY.
• %y – номер года в формате YY.
• %% – знак процента.
Например, функция DATE_FORMAT('2007-12-12 12:30:00', %e %M %Y г. %k часов %i минут') возвращает значение 12 December 2007 г. 12 часов 30 минут или 12 Декабря 2007 г. 12 часов 30 минут, в зависимости от установленного языка вывода дат.
• TIME_FORMAT('<Время или дата и время>', '<Формат>').
Функция TIME_FORMAT() возвращает время, преобразованное к