этой таблице результаты. Приведенный ниже запрос конвертирует дату
February 5, 1968 в строку с форматом MONTH DD, YYYY:
□ SELECT T0_CHAR(T0_DATE('05-FEB-1968'), 'MONTH DD, YYYY')
FROM dual;
Хранение и обработка дат и времени 143
TO_CHAR(TO_DATE(1 О
FEBRUARY 05, 1968
Примечание Функция TO_DATE() конвертирует строку в переменную типа дата-время (подробнее
об этой функции см. ниже).
В следующей таблице показаны примеры строк для форматирования
времени 19:32:36 (32 минуты и 36 секунд восьмого после полудня) вместе с
выходными данными, которые будут возвращены при вызове функции
T0_CHAR() с этими строками формата.
Строка формата Возвращаемая строка
НН24:MI:SS 19:32:36
HH.MI.SS AM 7.32.36 РМ
Использование T0_DATE() для конвертирования строки в тип дата-
время
Функцию T0_DATE(x [, 'формат] ) можно использовать для конвертирования
строки х в тип дата-время. Можно предоставить необязательную строку
формат для указания формата х. Если строка формат опущена, то дата
должна быть представлена в формате по умолчанию (обычно это DD-MONYYYY
или DD-M0N-YY).
Примечание Параметр базы данных NLS_DATE_FORMAT определяет формат даты по умолчанию.
Можно изменять установки NLS_DATE_FORMAT (см. ниже в разделе «Установка формата
даты по умолчанию»).
В следующем примере функция T0_DATE() используется для конвертирования
строк 04-JUL-2007 и 04-JUL-07 в дату^1у 4, 2007; последняя дата показана
в формате DD-M0N-YY:
□ SELECT T0_DATE('04-JUL-2007’), T0_DATE('04-JUL-07')
FROM dual;
T0_DATE( ‘ T0_DATE(‘
04-JUL-07 04-JUL-07
Задание формата переменной дата-время
Как уже было сказано ранее, вы можете предоставить функции T0_DATE()
дополнительный формат текстовой строки, используя те же самые параметры
формата, что были определены в таблице 5.2. В следующем примере
функция T0_DATE() используется для конвертирования строки July 4,
2007 в дату, причем функции T0_DATE() передается строка формата MONTH
DD, YYYY:
П SELECT T0_DATE('July 4, 2007', 'MONTH DD, YYYY')
FROM dual;
144 Глава 5
TO_DATE(
04-JUL-07
В следующем примере функции TO_DATE() передается строка формата
MM.DD.YY, и она конвертирует строку 7.04.07 в дату July 4, 2007; затем эта
дата отображается в формате DD-M0N-YY:
□ SELECT T0_DATE('7 .0 4 .0 7 ', ’ MM.DD.YY')
FROM dual;
T0_DATE('
04-JUL-07
Задание времени
Используя переменную дата-время, можно также задать время. Если не указать
время при вводе переменной дата-время, временной части переменной
по умолчанию будет присвоено значение 12:00:00 А.М. Задать формат
для времени можно, используя различные форматы (см. таблицу 5.3). Примером
формата времени может служить строка HH24:MI:SS, где:
■ НН24 - двузначное время (часы) в 24-часовом формате, принимающее
значения от 00 до 23,
■ MI - двузначное число минут (от 00 до 59),
■ SS - двузначное число секунд (от 00 до 59).
Примером времени, в котором используется формат HH24:MI:SS, может
служить 19:32:36. Полным примером переменной дата-время, использующей
данное значение времени, служит
□ 05-FEB-1968 19:32:36
Формат для этой переменной дата-время имеет вид
□ DD-MON-YYYY НН24:MI:SS
Следующий вызов T0_DATE() показывает использование этого формата
и значения переменной дата-время:
П T0_DATE(' 05-FEB-1968 19:32:36’ , ’ DD-MON-YYYY НН24:MI:S S ')
Переменная дата-время, возвращаемая функцией T0_DATE() в предыдущем
примере, используется в следующем операторе INSERT, который добавляет
строку в таблицу customers. Столбец dob для новой строки устанавливается
равным переменной дата-время, возвращаемой T0_DATE():
□ INSERT INTO customers (
customer_id, first_n am e, last_name,
dob,
phone
) VALUES (
6, ‘ F re d ’ , ' Brown',
T0_DATE('0 5 - FEB-1968 19:32:36’ , ' DD-MON-YYYY HH24:MI:S S '),
’ 800-555-1215’
);
Хранение и обработка дат и времени 145
Чтобы увидеть временную часть типа дата-время, можно использовать
функцию T0_CHAR ( ). Например, следующий запрос выбирает строки из таблицы
customers и использует для конвертирования значений столбца dob
функцию T0_CHAR(); обратите внимание, что для покупателя № 6 время было
задано предыдущим оператором INSERT:
□ SELECT customer_id, T0_CHAR(dob, 'DD-MON-YYYY HH24:MI:SS')
FROM customers;
CUSTOMER_ID T0_CHAR(D0B,’ DD-MON-
1 01-JAN-1965 00:00:00
2 05-FEB-1968 00:00:00
3 16-MAR-1971 00:00:00
4
5 20-MAY-1970 00:00:00
6 05-FEB-1968 19:32:36
Временная часть столбца dob для покупателей № 1, № 2, № 3 и № 5 установлена
равной 00:00:00 (12А.М.). Это время, которое по умолчанию
устанавливается базой данных, если в типе дата-время не обеспечена
временная часть.
Следующее выражение откатывает назад добавление новой строки:
□ ROLLBACK;
Примечание Если вы выполнили предыдущий оператор INSERT, не забудьте отменить внесенные