Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Временные функции, возвращающие даты

Gt; LENGTH(vchar_fld) varchar_length, _> LENGTH(text_fld) text_length | Gt; FROM string_tbl | Строковые функции, возвращающие строки | Выполнение арифметических операций | Управление точностью числовых данных | Обработка данных со знаком | Часовые пояса | Строковые представления временных данных | Загрузка данных часового пояса MySQL | Преобразования строки в дату |


Читайте также:
  1. I. СОВРЕМЕННЫЕ ОРДЕНА, НАЗЫВАЮЩИЕ СЕБЯ РЫЦАРСКИМИ
  2. Билет № 6 Валя .Современные модели социальной работы.
  3. Вопрос 24. Современные формы организации безналичных расчетов в РФ.
  4. Временные данные
  5. Временные и постоянные конституции
  6. Временные инвестиции
  7. Временные нарушения поведения, острые аффективные реакции неврозы;

 

Многие встроенные временные функции принимают в качестве аргу_ мента одну дату и возвращают другую. Например, функция MySQL date_add() позволяет добавить любой интервал (т. е. дни, месяцы, года) к заданной дате, чтобы получить другую дату. Вот пример, демонстри_ рующий, как добавить к текущей дате пять дней:

 

mysql> SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 5 DAY);

 

+__________________________________________+

 

| DATE_ADD(CURRENT_DATE(), INTERVAL 5 DAY) |

 

+__________________________________________+

 

| 2005_03_26 |

 

+__________________________________________+

 

1 row in set (0.00 sec)

 

Второй аргумент заключает в себе три элемента: ключевое слово interval (интервал), требуемое количество и тип интервала. В табл. 7.5 приве_ дены некоторые широко используемые типы интервалов.

 

Таблица 7.5. Общепринятые типы интервалов

 

Интервал Описание
   
Second Количество секунд
Minute Количество минут
Hour Количество часов
Day Количество дней
Month Количество месяцев
Year Количество лет
Minute_second Количества минут и секунд, разделенные двоеточием
Hour_second Количества часов, минут и секунд, разделенные двоеточием
Year_month Количества лет и месяцев, разделенные дефмсом
   

 

Первые шесть типов, перечисленные в табл. 7.5, довольно просты, а по_ следние три требуют немного более подробного объяснения, поскольку содержат по несколько элементов. Например, если оказалось, что опе_ рация с ID 9999 на самом деле имела место на 3 часа 27 минут и 11 се_ кунд позже того значения, которое было отправлено в таблицу Transac_ tion, исправить это можно следующим образом:


 

148 Глава 7. Создание, преобразование и работа с данными

UPDATE transaction

 

SET txn_date = DATE_ADD(txn_date, INTERVAL '3:27:11' HOUR_SECOND) WHERE txn_id = 9999;

 

В этом примере функция берет значение столбца txn_date, добавляет к нему 3 часа 27 минут и 11 секунд и изменяет столбец txn_date, встав_ ляя в него результирующее значение.

 

Или если в отделе кадров обнаруживают, что сотрудник с ID 4789 по записанным данным моложе, чем на самом деле, можно добавить к да_ те его рождения, скажем, 9 лет и 11 месяцев:

 

UPDATE employee

 

SET birth_date = DATE_ADD(birth_date, INTERVAL '9_11' YEAR_MONTH) WHERE emp_id = 4789;

Для пользователей SQL Server предыдущий пример можно бы_ ло бы реализовать с помощью функции dateadd():

 

UPDATE employee

 

SET birth_date =

 

DATEADD(MONTH, 119, birth_date)

 

WHERE emp_id = 4789

 

В SQL Server нет комбинированных интервалов (т. е. year_month), поэтому 9 лет 11 месяцев были преобразованы в 119 месяцев.

 

Пользователи Oracle Database могут для данного примера при_ менить функцию add_months():

 

UPDATE employee

 

SET birth_date = ADD_MONTHS(birth_date, 119)

 

WHERE emp_id = 4789;

 

Иногда требуется добавить интервал времени к определенной дате, при этом известна конечная дата выполнения, но неизвестно, сколько дней осталось до этой даты. Например, клиент банка регистрируется в сете_ вой банковской системе и планирует перевод на конец месяца. Вместо того чтобы писать какой_то код, определяющий текущий месяц и вы_ числяющий количество дней в этом месяце, можно вызвать функцию last_day() (последний день), которая сделает всю работу (и MySQL, и Oracle Database включают функцию last_day(); в SQL Server сопос_ тавимой функции нет). Если клиент запрашивает перевод 25 марта 2005 года, последний день марта можно найти следующим образом:

 

mysql> SELECT LAST_DAY('2005_03_25');

 

+________________________+ | LAST_DAY('2005_03_25') | +________________________+ | 2005_03_31 | +________________________+ 1 row in set (0.04 sec)


 

Временные данные  
   

 

Независимо от того, предоставляется ли значение типа 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 |

 

+_____________________+_____________________+

 

| 2005_04_18 21:23:25 | 2005_04_19 01:23:25 |

 

+_____________________+_____________________+

 

1 row in set (0.50 sec)

 

Эта функция очень полезна при получении дат из других часовых поя_ сов, отличных от того, в котором хранится база данных.

 


Дата добавления: 2015-08-17; просмотров: 62 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Функции для создания дат| Временные функции, возвращающие строки

mybiblioteka.su - 2015-2024 год. (0.014 сек.)