【发布时间】:2018-11-26 13:35:39
【问题描述】:
我想比较从 SQL 查询中获取的两个日期,以了解哪个日期更大。 sql中的日期格式是
2018-11-22 11:12:38.291647
我尝试过使用
java.util.Date sqlDate=new java.util.Date(resultset.getDate().getTime());
但它一直要求将数据类型更改为 int。
我也尝试过使用
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date d=df.format(/*date String*/);
但这也行不通。它不断要求将 d 的数据类型更改为 String。
【问题讨论】:
-
在第二次尝试中,您可以将日期格式“yyyy-MM-dd”更正为 sql 日期“2018-11-22 11:12:38.291647”的格式。它可能是“yyyy-MM-dd hh:mm:ss.SSS”。请确认格式,我没有测试过。
-
您应该使用
ResultSet.getTimestamp()而不是getDate(),例如java.sql.Timestamp ts = resultSet.getTimestamp(1)甚至更好的LocalDateTime ldt = resultSet.getObject(1, LocalDateTime.class) -
另外:
date或timestamp值没有“格式”。打印此类值时会应用您看到的任何格式。 -
你在 SQL 中的数据类型是什么?
timestamp?对于日期时间列,它不应该是char,也就是说,它的格式应该是无关紧要的。 -
仅供参考,非常麻烦的旧日期时间类,例如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 Java 8 中内置的 java.time 类所取代之后。见Tutorial by Oracle。