SELECT LAST_DAY('20050325');
++
| LAST_DAY('20050325') |
++
| 20050331 |
++
1 row in set (0.04 sec)
Временные данные
149
Независимо от того, предоставляется ли значение типа
date
или
date
time
, функция
last_day()
всегда возвращает значение типа
date
. Хотя,
может быть, и не заметно, что эта функция существенно экономит вре
мя, но если требуется найти последний день февраля и для этого выяс
нить, високосный этот год или нет, логика вычисления может быть до
вольно сложной.
Еще одна временная функция, возвращающая дату, преобразует зна
чение типа
datetime
из одного временного пояса в другой. Для этого
MySQL включает функцию
convert_tz()
, а Oracle Database – функцию
new_time()
(новое время). Например, если требуется преобразовать те
кущее местное время в UTC, можно сделать следующее:
mysql>
SELECT CURRENT_TIMESTAMP( ) current_est,
> CONVERT_TZ(CURRENT_TIMESTAMP( ), 'US/Eastern', 'UTC') current_utc;
+++
| current_est | current_utc |
+++
| 20050418 21:23:25 | 20050419 01:23:25 |
+++
1 row in set (0.50 sec)
Эта функция очень полезна при получении дат из других часовых поя
сов, отличных от того, в котором хранится база данных.
Временные функции, возвращающие строки
Большинство временных функций, возвращающих строковые значе
ния, используются для получения отдельной части даты или времени.
Например, MySQL включает функцию
dayname()
(название дня), опре
деляющую, на какой день недели приходится определенная дата:
mysql>
SELECT DAYNAME('20050322');
++
| DAYNAME('20050322') |
++
| Tuesday |
++
1 row in set (0.12 sec)
В MySQL много таких функций, предназначенных для извлечения ин
формации из значений дат, но я рекомендую пользоваться функцией
extract()
(извлечь), поскольку проще запомнить несколько разновид
ностей одной функции, чем десяток разных функций. Кроме того,
ext
ract()
является частью стандарта SQL:2003 и была реализована не
только в MySQL, но и в Oracle Database.
Для определения интересующего элемента даты функция
extract()
ис
пользует те же типы интервалов, что и функция
date_add()
(см.
табл. 7.5). Например, если из значения типа
datetime
требуется из
влечь только год, можно поступить так:
|