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

П SELECT DBTIMEZONE

FROM dual;

DBTIME

-05:00

Часовой пояс сеанса

По умолчанию часовой пояс сеанса устанавливается таким же, что и часовой

пояс базы данных. Изменить часовой пояс сеанса можно, используя

для установки значения параметра TIME_Z0NE оператор ALTER SESSION. Оператор

ALTER SESSION устанавливает локальный часовой пояс на Стандартное

Тихоокеанское время (PST):

П ALTER SESSION SET TIME_Z0NE = 'PST';

Примечание При установке часового пояса сеанса часовой пояс базы данных не изменяется.

Значение часового пояса сеанса можно получить с помощью функции

SESSI0NTIMEZ0NЕ():

□ SELECT SESSI0NTIMEZ0NE

FROM dual;

SESSIONTIMEZONE

PST

Получение текущей даты для часового пояса сеанса

Выше показано, как функция SYSDATE()используется для получения даты,

устанавливаемой операционной системой той машины, где размещена база

данных. При этом вы получаете дату для часового пояса базы данных.

Используя функцию CURRENT_DATE(), можно получить дату для часового

пояса вашего сеанса:

□ SELECT CURRENT_DATE

FROM dual;

CURRENTJ)

06-0CT-03

Получение смещения часового пояса

Передавая в функцию TZ_0FFSET( ) имя региона, можно получить значение

смещения вашего часового пояса в часах. В следующем запросе функция

156 Глава 5

TZ_OFFSET( ) используется для получения величины смещения для часового

пояса PST, которое равно -7 часам:

□ SELECT TZ_OFFSET('PST')

FROM dual;

TZ_0FFS

-07:00

Получение названий часовых поясов

Названия всех часовых поясов можно получить, сделав запрос к v$timezone_

names. Для выполнения этого запроса нужно подключиться к базе данных

как пользователь system. Ниже показаны названия некоторых часовых поясов,

полученных из строк v$timezone_names:

□ SELECT *

FROM $timezone_names;

TZNAME TZABBREV.

Africa/Cairo LMT

Africa/Cairo EET

Africa/Cairo EEST

Africa/Tripoli LMT

Africa/Tripoli CET

Africa/Tripoli С EST

Africa/Tripoll EET

America/Adak LMT

Любые из значений столбца TZABBREV могут быть использованы как установки

названия часового пояса.

Конвертирование даты-времени из одного часового

пояса к другому

Функцию NEW_TIME() можно использовать для конвертирования даты-времени

из одного часового пояса к другому. В следующем запросе функция

NEW_TIME() используется для конвертирования значения даты-времени 7:45

P.M. on May 13, 2006 (7:45 вечера 13 мая 2006 г.) из PST в EST:

□ SELECT T0-CHAR(NEW_TIME(T0_DATE(’ 13-MAY—2006 19 :4 5',

‘DD-MON-YYYY НН24:MI’), ‘PST', ‘EST’), ‘DD-MON-YYYY HH24:MI’)

FROM dual;

T0_CHAR(NEW_TIME(

13-MAY-2006 22:45

Время EST на три часа опережает время PST, поэтому к 7:45 P.M. следует

прибавить три часа, что дает 10:45 P.M. (или 22:45 в 24-часовом

формате).

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

Использование меток даты/времени

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

типе метка даты/времени. В этом типе данных хранятся значения столетия,

всех четырех цифр года, месяц, день, час (в 24-часовом формате), минуты

и секунды. Тип данных метки даты/времени имеет следующие преимущества

перед стандартным типом DATE:

■ в нем можно хранить дробные доли секунды,

■ в нем можно хранить информацию о часовом поясе.

Использование типов метка даты/времени

Таблица 4.6. Типы данных метка даты/времени

Тип Описание

timestamp [ (точ- В нем хранятся столетие, все четыре цифры года, месяц, день, час

ность_секунд) ] (в 24:часовом формате), минуты и секунды. Можно определить

необязательную точность представления секунд, задав параметр

точность_секунд, который может быть целым числом от 0 до 9.

Значение этого параметра по умолчанию равно 6, что означает, что

можно поместить справа от десятичной точки до 6 цифр. Если попытаться

добавить строку, содержащую больше цифр в дробной

части секунд, чем может хранить TIMESTAMP, значение дробной

части будет округлено.

TIMESTAMP [ (точ- Расширяет тип данных TIMESTAMP для хранения информации о

ность_секунд) ] WITH часовом поясе.

TIME ZONE

TIMESTAMP [ (точ- Расширяет тип данных TIMESTAMP для конвертирования имею-

ность_секунд) ] WITH щихся типов дата-время к установленному для базы данных ло-

LOCAL time ZONE кальному часовому поясу.

Использование типа T IM EST AM P

Можно использовать тип TIMESTAMP для определения столбцов таблицы.

В следующем операторе создается таблица purchases_with_timestamp,

в которой хранятся сведения о сделанных покупателями покупках. В этой

таблице есть столбец типа TIMESTAMP, который называется made_on и

используется для записи времени, когда была совершена покупка:

□ CREATE TABLE purchases_wiht_timestamp (

product_id INTEGER REFERENCES products(product_id),