MySQL 5.0. Библиотека программиста
Шрифт:
В данном разделе мы рассмотрим некоторые полезные функции, выполняющие различные операции с датами: получение текущей даты и/или времени, получение отдельных компонентов даты и/или времени, арифметические операции с датами (сложение, вычитание) и преобразование форматов даты.
В первую очередь познакомимся с функциями, которые возвращают текущую дату и/или время.
Функции получения текущей даты и времени
Для получения текущей даты и времени вы можете использовать следующие функции.
• CURDATE, CURRENT_DATE, current_date.
Возвращают текущую дату.
• CURTIME, CURRENT_TIME, current_time.
Возвращают
• NOW, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, LOCALTIME, LOCALTIME, LOCALTIMESTAMP, LOCALTIMESTAMP.
Возвращают текущую дату и время.
• SYSDATE.
Возвращает текущую дату и время Windows. В отличие от остальных функций, которые возвращают дату и/или время начала выполнения SQL-команды, функция SYSDATE возвращает время своего вызова. Таким образом, если в одной SQL-команде функция SYSDATE вызывается несколько раз, то возвращаемые ею значения могут быть различны.
• UTC_DATE, UTC_DATE.
Возвращает текущую дату по UTC в формате «YYYY-MM-DD» (или, в зависимости от контекста, «YYYYMMDD»).
Примечание
UTC – универсальное скоординированное время, аналог гринвичского времени, основанный на атомном отсчете времени.
• UTC_TIME, UTC_TIME.
Возвращает текущее время по UTC в формате «HH:MM:SS» (или, в зависимости от контекста, HHMMSS).
• UTC_TIMESTAMP, UTC_TIMESTAMP.
Возвращает текущую дату и время по UTC в формате «YYYY-MM-DD HH:MM:SS» (или, в зависимости от контекста, «YYYYMMDDHHMMSS»).
Далее рассмотрим функции, позволяющие выделять какую-либо часть даты.
Функции получения компонентов даты и времени
Рассмотрим функции, получающие в качестве аргумента дату и/или время и возвращающие один из компонентов аргумента.
• DATE(\'<Дaтa и время>\').
Функция DATE получает в качестве аргумента дату или дату и время и возвращает дату, отсекая время. Например, DATE (2007-12-12 12:30:00) возвращает значение 2007-12-12.
• TIME(\'<Дaтa и время>\').
Функция TIME получает в качестве аргумента время либо дату и время и возвращает время, отсекая дату. Например, TIME (2007-12-12 12:30:00) возвращает значение 12:30:00.
• DAY (\'<Дата или дата и время>\'), DAYOFMONTH (\'<Дата или дата и время>\').
Функции DAY и DAYOFMONTH получают в качестве аргумента дату или дату и время и выделяют из нее число (номер дня в месяце). Например, DAY(2007-12–12) возвращает значение 12.
• DAYNAME(\'<Дата или дата и время>\').
Функция DAYNAME получает в качестве аргумента дату или дату и время и возвращает наименование дня недели, которым является эта дата. Например, DAYNAME(2007-12-12) возвращает значение Wednesday, поскольку 12 декабря 2007 г. – среда.
Если требуется получить название дня недели на русском языке, выполните команду
SET LC_TIME_NAMES=\'ru_RU\
или
SET GLOBAL LC_TIME_NAMES=\'ru_RU\
(о том, как действуют команды SET и SET GLOBAL, рассказывалось
в подразделе «Вставка отдельных строк», когда речь шла об установке значения переменной sql_mode).Примечание
Чтобы установить для отображения дат украинский или белорусский язык, присвойте переменной lc_time_names значение uk_UA или, соответственно, be_BY.
• DAYOFWEEK(\'<Дата или дата и время>\').
Функция DAYOFWEEK получает в качестве аргумента дату или дату и время и вычисляет порядковый номер дня недели, которым является эта дата (1 – воскресенье, 2 – понедельник и т. д.). Например, DAYOFWEEK(2007-12-12) возвращает значение 4, и это означает, что 12 декабря 2007 г. – среда.
• WEEKDAY(\'<Дата или дата и время>\').
Функция WEEKDAY получает в качестве аргумента дату или дату и время и вычисляет порядковый номер дня недели, которым является эта дата (0 – понедельник, 1 – вторник и т. д.). Например, DAYOFWEEK(2007-12-12) возвращает значение 2, и это означает, что 12 декабря 2007 г. – среда.
• DAYOFYEAR(\'<Дата или дата и время>\').
Функция DAYOFYEAR получает в качестве аргумента дату или дату и время и вычисляет для нее порядковый номер дня в году. Например, DAYOFYEAR(2007-12-12) возвращает значение 34 6.
• LAST_DAY(\'<Дата или дата и время>\').
Функция LAST_DAY получает в качестве аргумента дату или дату и время и возвращает дату, соответствующую последнему дню в месяце, которому принадлежит исходная дата. Например, LAST_DAY(2007-12-12) возвращает значение 2007-12-31, поскольку последнее число декабря – 31.
• WЕЕK (\'<Дата или дата и время>\' [,Правило нумерации]).
Функция WEEK получает в качестве аргумента дату или дату и время и возвращает номер недели в году. По умолчанию неделя считается начинающейся с воскресенья, и первой неделей считается та неделя, воскресенье которой принадлежит данному году, а для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK(2007-12-31) = 52 и WEEK(2008-01-01) = 0.
Вы можете также задать параметр, определяющий правило нумерации недель.
• 0 – неделя считается начинающейся с воскресенья, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK(\'2008-01-01\',0) = 0.
• 1 – неделя считается начинающейся с понедельника, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен 0. Например, WEEK(\'2008-01-01\',1) = 1.
• 2 – неделя считается начинающейся с воскресенья, первая неделя года – целиком находящаяся в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK(\'2008-01-01\',2) = 52.
• 3 – неделя считается начинающейся с понедельника, первая неделя года – та, более трех дней которой находится в этом году, для дней, предшествующих первой неделе, номер недели равен номеру последней недели в предыдущем году. Например, WEEK(\'2008-01-01\',3) = 1.