Какой тип данных используется для хранения DateTime в Oracle 10g?
какой тип данных используется для хранения даты (не только даты, но и времени) в базе данных Oracle 10g? Я читал некоторые, где это (может быть ошибочно)"тип данных даты в Oracle 10g может хранить время даты
2 ответов
A DATE
в Oracle всегда есть компонент дня и компонент времени. Предполагая, что последние два столбца в DISCOUNT
таблица объявлены как DATE
, крайне маловероятно, что Oracle просто игнорирует компонент времени.
что заставляет вас думать, что компонент времени игнорируется? Я предполагаю, что вы проверяете данные, выполняя запрос типа
SELECT *
FROM discount
из SQL * Plus, SQL Developer, TOAD или другого GUI. Если вы это сделаете, по умолчанию, отображаемая дата будет содержать только компонент дня, а не компонент времени, что не означает, что компонент времени отбрасывается. Вместо этого это результат наличия по умолчанию NLS_DATE_FORMAT
это не отображает компонент времени. Вы можете принудительно отобразить компонент времени, выполнив явное TO_CHAR
в вашем запросе, (обратите внимание, что я думаю, на имена столбцов)
SELECT discount_id,
discount_type,
discount_amt,
to_char( discount_start_date, 'MM/DD/YYYY HH24:MI:SS' ),
to_char( discount_end_date, 'MM/DD/YYYY HH24:MI:SS' )
FROM discount
или изменив значение по умолчанию NLS_DATE_FORMAT
ALTER SESSION SET nls_date_format = 'MM/DD/YYYY HH24:MI:SS';
SELECT *
FROM discount;
Oracle DATE
также включает время. От docs:
обзор типа данных даты
тип данных DATE хранит значения точки во времени (даты и время) в a таблица. Дата тип данных хранит год (включая столетие), месяц, день, часы, минуты и секунды полночь.)
это может быть инструмент (SQL Developer, SQL * Plus), который вы используете, это обман вы. Попробуй!--7-->
select to_char(your_date, 'dd-mm-yy hh:mi:ss') from discount
также обратите внимание, что тип данных date хранится только до секунд. TIMESTAMP
или TIMESTAMP WITH TIME ZONE
более точное.