我有一个MySQL数据库,其中有几列包括到期日。我使用的是类型为'sql.date'或MySQL的 date
类型。
现在根据业务逻辑,我想弄清楚两件事--------。
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条建议中,我无法解决这个问题。
这可以通过使用正确的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
.