Oracle: аналогично sysdate, но возвращает только время и только дату - PullRequest
6 голосов
/ 30 сентября 2011

Я понимаю, что Oracle sysdate возвращает текущую дату и время.Это отлично подходит для столбцов timestamp или datetime.

Теперь, допустим, у меня есть столбец только DATE.Какие ключевые слова я должен использовать в моем запросе вставки?

insert into myTable1(myDateOnlyColumn) values(???)

И скажем, у меня есть столбец только TIME.Какие ключевые слова мне следует использовать в моем запросе на вставку?

 insert into myTable2(myTimeOnlyColumn) values(???)

Спасибо!

Ответы [ 3 ]

14 голосов
/ 02 октября 2012

Чтобы удалить время из sysdate, вы можете просто написать TRUNC(sysdate).

Например:

SELECT TRUNC(SYSDATE) "TODAY" FROM DUAL;

даст вам:

TODAY                     
------------------------- 
'2012-10-02 00:00:00'     
8 голосов
/ 30 сентября 2011

В 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> 

Если вы считаете, что вам нужен только столбец времени, вы должны всегда указывать один и тот же компонент даты.

0 голосов
/ 27 марта 2015
select sysdate, to_date(to_char(sysdate, 'dd/mm/yyyy'),'dd/mm/yyyy') d
from dual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...