Oracle - 单独的时间和日期

我对Oracle有一个问题(我已经安装了Oracle 11g Express Edition)。 我想插入'date'和'time'的值,但是我不能将它们分开。

create table Match 
(
    numMatch number(2) constraint PKMatch primary key,
    dateM date, 
    heureM date,
    numE_Eq number(2),
    numE_Eq2 number(2),
    nomTerrain varchar2(30)
);

- “tools”=>“preferences”=>“format de date:DD / MM / YYYY HH24:MI:SS”

insert into Match values (1,to_date
('10/12/2010','DD/MM/YYYY'),to_date('15:00:00','HH24:MI:SS'),1,3,'Stade Argentina'
);

结果:

dateM: 10/12/2010 00:00:00

heureM: 01/11/2012 15:00:00

PS:我试过to_char而不是to_date,但它根本不起作用。


是的,我知道'DATE数据类型包含日期和时间',但是它是坚持在表格中分别显示日期和时间的教授,我以前见过你的解决方案,但对我而言,这是一个查询,不要在表中插入值。

所以我想知道我怎么能有一个表格直接呈现日期和时间。


Oracle没有TIME数据类型。 您可以使用时间组件来存储日期,并根据时间进行查询,并根据时间进行显示。

select to_char(my_date_field, 'HH24:MI:SS') 
from my_table
where to_date(my_date_field, 'HH24:MI') = '18:51';

或者,您可以将整个午夜的时间存储为整数,然后根据该时间计算一天中的时间。 它也将使查询范围时间更容易,我认为。

另外,在一个会话中,执行以下命令,按照您的希望格式化所有日期:

alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'

Oracle DATE类型同时包含DATE和TIME信息(因为它在添加标准DATE,TIME和TIMESTAMP类型时预先标准SQL-92标准)。 所以,你不能在桌子上分开它们; 也没有理由这么做。 如果您愿意,可以创建一个视图,将DATE字段显示为单独的仅限日期和仅显示时间的显示字段。


在Oracle中表示TIME等效类型的另一种方法是使用INTERVAL类型,例如:

SQL> CREATE TABLE foo (
       bar INTERVAL DAY(0) TO SECOND(3)
     );

这将允许存储DAY组件的0精度的时间段和SECOND组件的3个小数点。 INSERT示例是:

SQL> INSERT INTO foo VALUES ('0 01:01:01.333');

这种方法最棒的地方在于,它可以自动以直观的格式显示SELECT的结果,而无需转换:

SQL> SELECT * FROM foo;

BAR
---------------------------------------------------------------------------
+0 01:01:01.333
链接地址: http://www.djcxy.com/p/36909.html

上一篇: Oracle — separate time and date

下一篇: How do I limit the number of rows returned by an Oracle query after ordering?