繁体   English   中英

如何检查当天的日期是否等于存储在数据库中的日期?

[英]How to check the date of the current day is equal to date that store in database?

我想找出我的应用程序中有多少新的每日订阅,但是当使用equalcompareTo方法时,计数器将为零,但在我的数据中,有三个新的每日订阅。

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

您的 SQL 查询将如下所示。

SELECT * FROM event_ WHERE date_ = ? ;

Java

在 Java 端,提供日期。

myPreparedStatement.setObject( … , today ) ;

恢复。

LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM