Литералы DATE
и TIMESTAMP
(а также интервальные литералы) являются частью стандарта ISO SQL и поддерживаются в PL/SQL, начиная с Oracle9i. Они представляют еще одну возможность записи значений в переменные типа даты/времени. Литерал даты состоит из ключевого слова DATE
, за которым следует дата (и только дата!) в следующем формате:
DATE 'YYYY-MM-DD'
Литерал TIMESTAMP
состоит из ключевого слова TIMESTAMP
, за которым указывается дата и время в строго определенном формате:
TIMESTAMP 'YYYY-MM-DD HH:MI:SS[.FFFFFFFFF] [{+|-}HH:MI]'
Обозначение FFFFFFFFF представляет доли секунды и не является обязательным. Доли секунды занимают от одной до девяти цифр. Необязательное смещение часового пояса (+HH:MI ) может содержать знак «плюс» или «минус». Часы всегда задаются в 24-часовом формате.
Если в литерале типа TIMESTAMP
не указано смещение часового пояса, по умолчанию будет использоваться часовой пояс текущего сеанса.
В следующем коде PL/SQL представлено несколько допустимых литералов типа DATE
и TIMESTAMP
:
DECLARE
ts1 TIMESTAMP WITH TIME ZONE;
ts2 TIMESTAMP WITH TIME ZONE;
ts3 TIMESTAMP WITH TIME ZONE;
ts4 TIMESTAMP WITH TIME ZONE;
ts5 DATE;
BEGIN
--Две цифры для долей секунды
ts1 := TIMESTAMP '2002-02-19 11:52:00.00 -05:00';
--9 цифр для долей секунды, 24-часовой формат.
ts2 := TIMESTAMP '2002-02-19 14:00:00.000000000 -5:00';
--Без долей секунды
ts3 := TIMESTAMP '2002-02-19 13:52:00 -5:00';
--Без часового пояса, по умолчанию используется часовой пояс текущего сеанса
ts4 := TIMESTAMP '2002-02-19 13:52:00';
--Литерал типа DATE
ts5 := DATE '2002-02-19';
END;
Формат литералов DATE
и TIMESTAMP
определяется стандартами ANSI/ISO; изменить его не сможете ни вы, ни администратор базы данных. Поэтому использование этих литералов уместно везде, где в программном коде должны задаваться конкретные значения (например, константы) даты/времени.
База данных Oracle позволяет использовать в литералах TIMESTAMP
имена регионов часовых поясов — например, TIMESTAMP
'2002-02-19 13:52:00 EST
'. Однако следует помнить, что эта функциональность выходит за рамки стандарта SQL.
Имя | Описание |
YEAR | Количество лет в диапазоне от 1 до 999 999 999 |
MONTH | Количество месяцев в диапазоне от 0 до 11 |
DAY | Количество дней в диапазоне от 0 до 999 999 999 |
HOUR | Количество часов в диапазоне от 0 до 23 |
MINUTE | Количество минут в диапазоне от 0 до 59 |
SECOND | Количество секунд в диапазоне от 0 до 59,999 999 999 |