В Oracle не существует такой вещи, как столбец только DATE. Тип данных DATE хранит дату и время.
Если вам важна только дата, вы можете:
INSERT INTO tbl (dtCol) VALUES (TO_DATE('20110929','YYYYMMDD');
Это оставляет компонент времени в 00:00:00. Вы не должны показывать это все же.
Если вас интересует только компонент времени, в колонке по-прежнему сохраняется дата. Вы просто должны справиться с этим на выходе. Например:
SQL> CREATE TABLE dt (d DATE);
SQL> INSERT INTO dt VALUES (TO_DATE('1:164800','J:HH24MISS'));
1 row inserted
Отображение фактического содержимого столбца показывает, что дата была вставлена:
SQL> SELECT * FROM dt;
D
--------------------
0/0/0000 4:48:00 PM
Выбор только компонента времени из столбца дает желаемый результат:
SQL> SELECT TO_CHAR(d, 'HH24:MI:SS') d FROM dt;
D
--------
16:48:00
SQL>
Если вы считаете, что вам нужен только столбец времени, вы должны всегда указывать один и тот же компонент даты.