Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Как добавить столбец вида TIMESTAMP заданного формата

Как в таблицу ORDERS добавить столбец ORDERDATE с заданным форматированием? Либо как сменить формат у уже существуещего столбца?
alter TABLE ORDERS ADD ORDERDATE TIMESTAMP 'YYYY-MM-DD HH24:MI:SS'


Ответ

Oracle хранит данные в БД в бинарном виде, поэтому когда речь заходит о форматировании DATE/TIMESTAMP подразумевается ввод и вывод - т.е. как показывать данные при выводе (SELECT) и как их парсить при вводе (INSERT / UPDATE).
Обычно это делается на стороне клиента:
для типа DATE:
alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";
для типа TIMESTAMP:
alter session set NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS";
для типа TIMESTAMP WITH TIME ZONE:
alter session set NLS_TIMESTAMP_TZ_FORMAT="YYYY-MM-DD HH24:MI:SS";
PS очень советую задуматься об использовании TIMESTAMP WITH TIME ZONE - это поможет избежать многих проблем, особенно если данные будут храниться для/из нескольких различных временных поясов.

Также можно управлять настройками по умолчанию при помощи переменной окружения ОС - NLS_TERRITORY - формат даты будет установлен в наиболее распространенный для данной страны.

Комментариев нет:

Отправить комментарий