本问题已经有最佳答案,请猛点这里访问。
我在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;