从java 1.4升级到java 8时java中的日期问题
最近,我们将UNIX中的java运行时环境从jdk 1.4升级到jdk 8。我们发现,在oracle数据库中插入的日期带有时间戳(dd-mm-yyy-hh:mm:ss)。升级之前,它是唯一的日期(dd-mm-yyyy)。这是由于jdk升级。在升级到JDK 8之后,使用了在JDK 1.4中运行的相同版本。JDK 6也面临着这个问题 有没有人遇到过这种情况。我不理解,只是升级java环境造成了这个问题,因为没有代码更改 是JDK1.4中的默认日期格式,它不同于JDK8或JDK6 有没有什么方法可以在不修改代码的情况下解决这个问题,比如使用SimpleDataFormat将日期转换为所需的格式等。 下面是我们用来将日期转换为所需格式的代码从java 1.4升级到java 8时java中的日期问题,java,oracle,date,java-8,jdk1.6,Java,Oracle,Date,Java 8,Jdk1.6,最近,我们将UNIX中的java运行时环境从jdk 1.4升级到jdk 8。我们发现,在oracle数据库中插入的日期带有时间戳(dd-mm-yyy-hh:mm:ss)。升级之前,它是唯一的日期(dd-mm-yyyy)。这是由于jdk升级。在升级到JDK 8之后,使用了在JDK 1.4中运行的相同版本。JDK 6也面临着这个问题 有没有人遇到过这种情况。我不理解,只是升级java环境造成了这个问题,因为没有代码更改 是JDK1.4中的默认日期格式,它不同于JDK8或JDK6 有没有什么方法可以在
SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
java.util.Date d = sdf.parse(inputDate);
stmt.setDate(1, new java.sql.Date(d.getTime()));
我们也面临同样的问题,但是当我们查看代码时,我们发现我们使用了
java.sql.Timestamp
我们将java中的返回类型更改为java.sql.Date
。此外,在ORACLE数据库中,数据类型称为日期
检查Java中的返回类型,如果它仍然未解决,请更新如果您使用的是开始日期和结束日期,您只需在dao层中使用即可从数据库获取数据
date_trunc('day',fileUploadDate) between to_timestamp(:startDate, 'dd/MM/YYYY HH:mm:ss.S') and to_timestamp(:endDate, 'dd/MM/YYYY HH:mm:ss.S')
以及在控制器使用中
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",Locale.ENGLISH);
有趣的问题,但如果没有代码,我们可能无法诊断。问题可能存在于很多地方,因此,除非有人解决了完全相同的问题——即使是在这种情况下——否则我们只能猜测。Oracle数据库定义了两(2)种日期/时间数据类型,日期和时间戳。它们都包含日期和时间。所以我不明白你所说的唯一日期(dd-mm-yyy)是什么意思。从来没有“JDK 4”。有一个jdk1.4,它被命名为“Java2”。感谢您的贡献。请不要教年轻人使用臭名昭著的麻烦和过时的
SimpleDateFormat
类。asker刚刚升级到Java 8,因此没有任何理由不享受它的DateTimeFormatter
。亲爱的,我不是在教你。我想这可能会对你有所帮助,我已经给出了我的观点,因为这个世界上没有人是完美的。但我非常清楚一件事“许多人受过教育,但并不完全有礼貌。”这两个类,Timestamp
和Date
,都很糟糕,现在充斥着设计缺陷和黑客。它们都在几年前被java.time类取代。在JDBC 4.2或更高版本中使用OffsetDateTime
。OffsetDateTime odt=myResultSet.getObject(…,OffsetDateTime.class)
和myPreparedStatement.setObject(…,odt);