Выбрать главу

этой таблице результаты. Приведенный ниже запрос конвертирует дату

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, не забудьте отменить внесенные