【发布时间】:2022-01-21 13:44:39
【问题描述】:
我想知道我的应用程序中有多少新的每日订阅,但是当使用equal和compareTo 方法时,计数器将为零,但在我的数据中,有三个新的每日订阅。
String sql = "select paidDate from traineeJoinPayment; ";
ResultSet rs = statement.executeQuery(sql);
Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date(date1.getTime());
int dayCount = 0;
while (rs.next()) {
java.sql.Date date = java.sql.Date.valueOf(rs.getString(1));
if ((date2.equals(date)))
dayCount++;
}
另外,我正在尝试制作另一个单独的示例,但结果是一样的。
String rs = "2022-01-21";
java.sql.Date date = java.sql.Date.valueOf(rs);
Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date(date1.getTime());
System.out.println(date.equals(date2));
这里也是输出false
注意:在 MySQL 中执行上述查询时的以下日期
2022-01-05
2022-01-02
2022-01-06
2022-01-08
2021-12-30
2022-01-01
2022-01-21
【问题讨论】:
-
旁注:嗯,我不是一个 Java 人,所以我可能会错过一些东西,但看起来你获取整个表的列,然后应用过滤器并计算
Java中的匹配行。您是否意识到,您可以直接在数据库查询中执行此操作,这很可能便宜很多? -
试试
select count(*) from traineeJoinPayment where paidDate >= ? and paidDate < ? -
这是一个普通的 sql 东西:
select count(*) from traineeJoinPayment where paidDate = CURDATE() -
我怀疑
java.util.Date(java.sql.Date的超类)的时间部分正在干扰equals... -
坦克很多,我用
Turo查询解决了这个问题,`