我对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”=>“格式日期: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'
);
result:
dateM: 10/12/2010 00:00:00
heureM: 01/11/2012 15:00:00
PS:我尝试过to_char而不是to_date,但它根本不起作用 .
是的,我知道'DATE数据类型包含日期和时间',但是教授坚持在表格中分别显示日期和时间,我以前见过您的解决方案,但对我来说,这是一个查询,不要在表格中“插入值” .
所以我想知道我如何能有一张表直接显示日期和时间 .
4 回答
Oracle没有TIME数据类型 . 您可以使用时间组件存储DATE,只根据时间进行查询,并根据时间显示 .
或者,您可以将午夜的秒数存储为整数,并从中计算一天中的时间 . 我认为它还可以更容易地查询范围时间 .
此外,在会话中,执行以下操作以使所有日期按您希望的方式格式化:
Oracle DATE类型包括DATE和TIME信息(因为它在添加标准DATE,TIME和TIMESTAMP类型时,它早于SQL-92标准) . 所以,你不能在表格中将它们分开;也没有理由这样做 . 如果您愿意,可以创建一个视图,将DATE字段显示为单独的仅日期和仅限时间显示字段 .
在Oracle中表示TIME等效类型的另一种方法是使用INTERVAL类型,例如:
这将允许存储DAY组件的0精度的时间段,以及SECOND组件的3个小数点 . INSERT示例是:
这种方法的优点在于它能够以直观的格式自动呈现SELECT的结果,而无需转换:
虽然这听起来像一个非常愚蠢的要求,但您可以做的一件事是创建两个计算列,将日期和时间显示为varchar列:
然后一个
将返回:
或者,您可以使用
to_char()
在表格上创建一个分隔日期和时间的视图