本问题已经有最佳答案,请猛点这里访问。

我在Java应用程序中使用oracle数据库。 在数据库中,我创建了一个列类型为DATE的表,然后我的应用程序使用一些精确到秒的日期填充了该表。

现在,我的应用程序能够以秒为单位精确检索日期,并且一切正常。 但是我正在使用Oracle SQL Developer来监视数据库中的内容,这是我的问题,当我从带有DATE列的表视图中查看表内部时,我只能看到没有小时/分钟/秒的时间。

另外,如果我运行脚本:

select SAVED_DATE from MY_TABLE;

它以16/09/07格式返回所有日期,而没有时间/分钟/秒的时间。

如何从Oracle SQL Developer检查该列中存储的准确时间?

NLS格式设置。 工具->首选项->数据库-> NLS将日期/时间戳格式设置为所需格式,或使用to_Char格式化日期以显示时间部分。 Select to_Char(sysdate,DDMMYYYY HH24:MI:SS) from dual或在此处查看有关NLS设置的更多信息

@Jens Oracle具有DATE和TIMESTAMP数据类型,并且都具有时间分量。 Oracle没有单独的DATETIME数据类型。

请参阅ixora。 与其他数据库和Java相反,Oracle的Date数据类型还包含小时,分钟和秒。

byte 1: century + 100

byte 2: year + 100

byte 3: month

byte 4: day of month

byte 5: hour + 1

byte 6: minute + 1

byte 7: second + 1

令您感到困惑的是向VARCHAR2的隐式数据类型转换。 这由会话参数NLS_DATE_FORMAT驱动。

xQbert是正确的,将SQLDeveloper设置中的NLS_DATE_FORMAT更改为" YYYY-MM-DD HH24:MI:SS"。

谢谢,解释了一切。

@AkkaJaworek未存储在表中的日期(类型13)为8字节,存储在表中的日期(类型12)为7字节-请参见SO文档中的日期格式和SO文档中的设置默认格式模型 一个约会。

Oracle数据库中的Date列将以低至几秒的精度存储信息。 从此列中选择时,默认的返回数据为DD-MON-YY。

选择时可以通过使用to_char来获得原始精度。 例如:

SELECT to_char(SAVED_DATE,'YYYY-MM-DD HH24:MI:SS') FROM MY_TABLE

将返回类似2016-09-07 14:58:30的日期

java应用程序从数据库检索的日期是否可能具有带有正确的小时/分钟/秒时间的日期? 这是当我从数据库2016-09-07 11:24:55.0请求日期时Hibernate返回我的示例

一旦将数据存储在Date字段中,就无法以小于几天的精度检索原始数据。

不在oracle中。 Oracle将时间部分存储在日期数据类型上:请参见以下示例:create table foo ( mDate date, mtimestamp timestamp); insert into foo values (to_date(2016-1-1 15:23:33, YYYY-MM-DD HH24:MI:SS),sysdate); Select A.*, to_char(mdate,YYYY-MM-DD HH24:MI:SS) from foo A;