Tin*_*iny 8 java oracle oracle10g
在Oracle 10g数据库中使用哪种数据类型来存储日期时间(不仅是日期而且还有时间)?我已经阅读了一些内容(可能是错误的)" Oracle 10g中的日期数据类型可以存储日期时间 "但是当我尝试这样做时似乎没有发生.
DATE数据类型是datetime数据类型.它存储日期和时间.日期部分基于公元前4712年1月1日以来的天数.时间部分基于自午夜以来的秒数.链接
我通过Java作为前端尝试使用以下SQL直接在Oracle终端上.
insert into discount
values(7, 'Code', 12.5, to_date('11-AUG-2012 06:05:23', 'dd-mon-yyyy hh:mi:ss'),
to_date('20-AUG-2012 07:50:23', 'dd-mon-yyyy hh:mi:ss'))
Run Code Online (Sandbox Code Playgroud)
它可以工作,但(在这两种情况下)Oracle只是忽略时间部分并只插入SQL中指定的日期而没有任何错误?
哪个数据类型用于在Oracle 10g中存储日期时间?是TimeStamp吗?
Jus*_*ave 10
DATEOracle中的A 始终具有日期组件和时间组件.假设表中的最后两列DISCOUNT被声明为DATE,那么Oracle几乎不可能忽略时间组件.
是什么让你相信时间组件被忽略了?我的猜测是你通过运行像这样的查询来检查数据
SELECT *
FROM discount
Run Code Online (Sandbox Code Playgroud)
来自SQL*Plus,SQL Developer,TOAD或其他一些GUI.如果这样做,默认情况下,显示的日期将只有一个日期组件而不是时间组件这并不意味着时间组件被丢弃.相反,它是具有NLS_DATE_FORMAT不显示时间组件的默认值的结果.您可以通过TO_CHAR在查询中执行显式来强制显示时间组件(请注意,我在猜测列的名称)
SELECT discount_id,
discount_type,
discount_amt,
to_char( discount_start_date, 'MM/DD/YYYY HH24:MI:SS' ),
to_char( discount_end_date, 'MM/DD/YYYY HH24:MI:SS' )
FROM discount
Run Code Online (Sandbox Code Playgroud)
或者通过更改默认值 NLS_DATE_FORMAT
ALTER SESSION SET nls_date_format = 'MM/DD/YYYY HH24:MI:SS';
SELECT *
FROM discount;
Run Code Online (Sandbox Code Playgroud)