[英]How to check the date of the current day is equal to date that store in database?
我想找出我的应用程序中有多少新的每日订阅,但是当使用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));
这里还有 output false
注意:在 MySQL 中执行上述查询时的日期如下
2022-01-05
2022-01-02
2022-01-06
2022-01-08
2021-12-30
2022-01-01
2022-01-21
切勿使用Date
class。 这两个可怕的类在几年前被 JSR 310 中定义并在 JDBC 4.2 及更高版本中支持的现代java.time类所取代。 具体来说, java.sql.Date
被替换为LocalDate
。
通常最好利用数据库进行尽可能多的工作。 数据库引擎通常经过高度优化,最适合搜索和比较等任务。
因此,与其将一堆行带到 Java 进行过滤,不如让数据库进行查询。
确定当前日期需要时区。 对于任何给定的时刻,日期在全球范围内因时区而异。
ZoneId z = ZoneId.of( "America/Edmonton" ) ;
LocalDate today = LocalDate.now( z ) ;
您的 SQL 查询将如下所示。
SELECT * FROM event_ WHERE date_ = ? ;
在 Java 端,提供日期。
myPreparedStatement.setObject( … , today ) ;
恢复。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.