Java Oracle截断日期的时间部分

Java Oracle截断日期的时间部分,java,oracle,date,oracle11g,Java,Oracle,Date,Oracle11g,在我的Java应用程序中,我必须使用对象创建的日期和时间将数据保存到Oracle 11g,为此,我将Java.util.date()转换为Java.sql.date(),格式为new Java.sql.date(new Java.util.date().getTime())。但我注意到,在插入数据后,oracle会截断日期的时间部分,我得到的结果是2015年9月16日。但我需要这样的格式:16/09/2015 9:55:44。oracle的sysdate()过程创建的第二种格式。如何从java代

在我的Java应用程序中,我必须使用对象创建的日期和时间将数据保存到Oracle 11g,为此,我将
Java.util.date()
转换为
Java.sql.date()
,格式为
new Java.sql.date(new Java.util.date().getTime())
。但我注意到,在插入数据后,oracle会截断日期的时间部分,我得到的结果是2015年9月16日。但我需要这样的格式:16/09/2015 9:55:44。oracle的
sysdate()
过程创建的第二种格式。如何从java代码中获取第二种格式?

我想Oracle不会截断。例如,如果使用Oracle SQL Developer,则必须更新NLS参数“日期格式”以查看时间

默认情况下,它仅等于“DD-MON-RR”


从内存中(已经有一段时间了),
java.sql.Date
仅用于保存日期(无时间),如果您还需要时间信息,则需要使用
java.sql.TimeStamp

如果要存储日期和时间,请不要使用
java.sql.Date
。只需使用
java.util.Date
而不进行任何转换。简单易用。也不需要
java.sql.TimeStamp


并确保您的NLS设置(例如在SQL Developer中)同时显示日期和时间,因为Oracle不区分有时间和无时间的日期。

您是否尝试过使用
java.SQL.TimeStamp
java.SQL.date()
根据定义删除时间部分(请参阅)。如果还想存储时间,则需要使用
ResultSet.getTimestamp()
PreparedStatement.setTimestamp()
,我会检查它。“你的答案是第一个,这是一个解决方案。你可以把它写下来作为答案,我会接受这个类似的问题并进行大量的讨论:。不,Oracle truncate,我使用Toad,在Toad中使用sysdate创建的数据显示日期和时间,但从java中插入为仅日期。我想,Toad只是截断HH22:MI:SS的零值,因为
为了符合SQL date的定义,必须通过将实例关联的特定时区中的小时、分钟、秒和毫秒设置为零来“规范化”java.sql.Date实例包装的毫秒值。
对于通过JDBC访问的所有数据库,这应该是真的,因为JDBC API定义了
java.sql.Date
将时间部分设置为
00:00:00
@a具有\u no\u name的\u horse_u,因此在似乎支持的文档中找不到任何支持的内容,JavaDocs说“一个围绕毫秒值的精简包装器,允许JDBC将其标识为SQL日期值。毫秒值表示自1970年1月1日00:00:00.000 GMT以来经过的毫秒数。“这似乎表明它能够支持时间,但我想这取决于JDBC驱动程序如何映射列值。根据我的经验,这似乎是正确的(
Date
表示日期,
TimeStamp
表示日期/时间)下一句话是
java.sql.Date
is:为了符合sql日期的定义,java.sql.Date实例包装的毫秒值必须通过将实例关联的特定时区中的小时、分钟、秒和毫秒设置为零来“规范化”。因此,没有名称的@a_horse_是正确的t、 @Codo I如果只是说“不带时间值”就好了:P@MadProgrammer:不能这么说,因为
java.sql.Date
继承自
java.util.Date
,并且始终包含时间部分。