Какой тип данных используется для хранения 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 более точное.