一尘不染

Oracle:与sysdate类似,但仅返回时间和日期

sql

我了解Oracle sysdate返回当前日期和时间。这对于timestamp或datetime列非常有用。

现在,假设我有一个仅DATE列。我应该在插入查询中使用哪些关键字?

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

假设我有一个“仅时间”列。我应该在插入查询中使用哪些关键字?

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

谢谢!


阅读 185

收藏
2021-03-10

共1个答案

一尘不染

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>

如果您认为只需要一个时间列,则需要确保始终插入相同的日期部分。

2021-03-10