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

01-JUN-08

В следующем примере дата-время 7:45:26 P.M. May 25, 2008 округляется

до ближайшего часа - 8:00 P.M.:

П SELECT T0_CHAR(R0UND(T0_DATE('25-MAY-2008 19:45:26',

‘DD-MON-YYYY НН24:MI;SS’), ‘HH24’), ‘DD-M0N-YYYY HH24:MI:SS’)

FROM dual;

T0_CHAR(ROUND(T0_DAT

25-MAY-2008 20:00:00

SYSDATE

Функция SYSDATE используется для получения значений даты и времени,

установленных в операционной системе компьютера, на котором размещена

база данных. В приведенном ниже примере мы получим текущую

дату:

□ SELECT SYSDATE

FROM dual;

SYSDATE

05-NOV-07

Хранение и обработка дат и времени 153

TRUNCO

Функция TRUNC(x [, единицы]) используется для усечения х. По умолчанию

х усекается до начала суток. Если задать дополнительный параметр - строку

единицы, х будет усечен именно до этой единицы; например, при задании

ММ значение х будет усечено до первого дня месяца. Для усечения

даты-времени можно использовать многие параметры, показанные в таблице

5.2.

В следующем примере TRUNCO используется для усечения даты 25 мая

2008 г. (May 25, 2008) до первого дня года, которым будет 1 января 2008 г.

(January 1, 2008):

□ SELECT TRUNC('25-MAY-2008', 'YYYY')

FROM dual;

TRUNC(T0_

01-JAN-08

В следующем примере та же самая дата усекается до первого дня месяца,

которым будет 1 мая 2008 г. (May 1, 2008):

□ SELECT TRUNC(T0_DATE('25-MAY-2008', 'ММ')

FROM dual;

TRUNC(T0_

01-MAY-08

Ниже показано усечение даты-времени 7:45:26 P.M. May 25, 2008 до часов,

т.е. до 7:00 P.M.:

□ SELECT T0_CHAR(TRUNC(T0_DATE('25-MAY-2008 19:45:26’,

'DD-M0N-YYYY HH24:MI:S S '), ‘HH24’), 'DD-M0N-YYYY HH24:MI:SS’ )

FROM dual;

T0_CHAR(TRUNC(T0_DAT

25-MAY-2008 19:00:00

Использование часовых поясов

В базе данных Oracle9i появилась возможность использовать различные

часовые пояса. Часовым поясом называется смещение от времени по Гринвичу

(Великобритания). Время по Гринвичу было когда-то известно под

названием Гринвичского времени (Greenwich Mean Time - GMT), но теперь

оно называется Всемирное скоординированное время (Universal

Coordinated Time - UTC). Часовой пояс определяется либо как смещение

относительно UTC, либо по имени региона (например, PST). При определении

смещения используется формат НН:М1 с префиксом в виде знака

плюс или минус:

□ +|- НИ:MI

где

154 Глава 5

ш + или - означает увеличение или уменьшение смещения относительно

итс,

■ НН:М1 указывает на часы и минуты смещения для часового пояса.

Примечание Для задания времени (часы и минуты) часового пояса используются параметры

формата TZH и TZR (см. таблицу 5.2.). __________________________________

В приведенных ниже примерах показаны смещения на -8 ч от UTC (отставание)

и на 2 ч 15 мин от UTC (опережение):

□ -08:00

+02:15

Помимо указания смещения, можно задать часовой пояс, указав название

региона. Например, PST обозначает Стандартное Тихоокеанское время

(Pacific Standard Time), которое отстает от UTC на восемь часов. EST

означает Восточное стандартное время (Eastern Standard Time), на пять

часов отстающее от UTC.

Примечание Регионы часовых поясов используют параметр формата TZR (см. таблицу

5.2). ' ‘ _______________

Функции, связанные с часовыми поясами

Есть несколько функций, связанных с часовыми поясами; эти функции перечислены

в таблице 5.5.

В последующих разделах вы узнаете больше об этих функциях.

Таблица 5.5. Функции, связанные с часовыми поясами

Функция Описание

CURRENTJDATE Для сеанса базы данных возвращает текущую дату в локальном

часовом поясе.

DBTIMEZONE Возвращает часовой пояс для базы данных.

NEW TIME(x, часовой_по- Конвертирует х из времени часового_пояса1 ко времени часо-

яс1, часовой_пояс2) вого_пояса2 и возвращает новое значение даты-времени.

SESSIONTIMEZONE Возвращает часовой пояс для сеанса базы данных.

TZ_0FFSET(4acoBOR_nonc) Возвращает смещение в часах и минутах для часового пояса.

Часовой пояс базы данных и часовой пояс сеанса

Если вы работаете на большую всемирную организацию, база данных, к

которой вы обращаетесь, может быть расположена в другом часовом поясе,

отличающемся от вашего локального часового пояса. Принято называть

часовой пояс для базы данных часовым поясом базы данных (database

time zone), а часовой пояс для вашего сеанса базы данных - часовым поясом

сеанса (session time zone).

Хранение и обработка дат и времени 155

Часовой пояс базы данных

Часовой пояс базы данных контролируется при помощи параметра базы

данных TIME_ZONE. Ваш АБД может изменить значение параметра

TIME_ZONE в файлах init.ora или spfile.ora базы данных. Получить значение

часового пояса базы данных можно с помощью функции

DBTIMEZONE():