使用Java将当前日期与MySQL数据库中的日期进行比较。

问题描述 投票:0回答:1

我有一个MySQL数据库,其中有几列包括到期日。我使用的是类型为'sql.date'或MySQL的 date 类型。

现在根据业务逻辑,我想弄清楚两件事--------。

  1. 产品的有效期还剩多少天?
  2. 产品是否已经过期。
java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());

我可以使用这个来获取当前日期,但我无法使用下面给出的查询来比较它和到期日期。

rs = statement.executeQuery("SELECT * FROM Checkout where expiry_date <= date ");

我也试着将 date 变量与SQL方法 now()curdate() 但无济于事。

我是JAVA领域的新手,请大家帮忙。如果需要其他信息,我很乐意提供。

编辑

还试了一下这个-

long millis=System.currentTimeMillis();  
java.sql.Date date=new java.sql.Date(millis);  

ResultSet rs2 = null;
PreparedStatement stmt = null;
stmt = connection.prepareStatement("SELECT * FROM Checkout where expiry_date < ?;");
stmt.setDate(1, date);
rs2 = stmt.executeQuery();

但还是不行。

在前50条建议中,我无法解决这个问题。

java mysql date jdbc
1个回答
1
投票

这可以通过使用正确的MySQL数据类型和语句来实现.正如我在评论中提到的,我建议使用BIGINT数据类型的? expiry_date 列.在你的程序中,你会想做以下的事情。

long currentTime = Calendar.getInstance().getTime().getTime();
PreparedStatement stmt = connection.prepareStatement("SELECT * FROM Checkout where expiry_date < ?");
stmt.setLong(1, currentTime);
ResultSet rs2 = stmt.executeQuery();

这将比较数据库中的值,它看起来应该是这样的: 1589522424053 的值,它应该是类似于 1589532467163.

© www.soinside.com 2019 - 2024. All rights reserved.