【问题标题】:How to calculate difference in days between the one from database and current date using java如何使用java计算数据库和当前日期之间的天数差异
【发布时间】:2023-03-15 08:35:01
【问题描述】:

我从数据库中检索日期(使用 mysql)

java.sql.Date dbSqlDateLastRecord = result.getDate("date");

java.util.Date LastRecord = new java.util.Date(dbSqlDateLastRecord.getTime());  

并获得当前日期

LocalDate today = LocalDate.now(); 

但是我没有找到如何计算这两者之间的天数差异。怎么做? “差异”是指如果我有以下两个:2018-05-25”和“2018-05-24”,我会得到 1。

【问题讨论】:

标签: java mysql date jdbc java-time


【解决方案1】:

你的意思是:

java.sql.Date dbSqlDateLastRecord = result.getDate("date");

//Convert java.sql.Date to LocaDate
LocalDate dateDB = dbSqlDateLastRecord.toLocalDate();

LocalDate dateSS = LocalDate.now();

然后你可以得到它们之间的区别:

import java.time.Duration;
...
long days = Duration.between(dateDB.atStartOfDay(), dateSS.atStartOfDay()).toDays();

或者:

import java.time.temporal.ChronoUnit;
...
long days = ChronoUnit.DAYS.between(dateDB, dateSS);

【讨论】:

  • 谢谢!!要将新日期发送到数据库,如何将 java 的 LocalDate 转换为数据库的日期?类似于:“java.sql.Date dateDB = dbSqlDateLastRecord.something();”
  • @student 你的意思是java.sql.Date dbSqlDateLastRecord = java.sql.Date.valueOf(LocalDate.now());
  • 从 JDBC 4.2 开始,根本不需要使用 java.sql.Date。请改用java.time.LocalDate
  • 是的@BasilBourque 我同意 Ole V.V.已经提到了,我只是想向 OP 展示如何解决他的问题
【解决方案2】:

不要使用java.sql.Date。不要使用java.util.Date。这两个课程都已经过时了。也不要使用任何转换。从数据库中获取LocalDate

    LocalDate dateDB = result.getObject("date", LocalDate.class);

这需要至少 Java 8 和至少 JDBC 4.2。我的猜测是你在那里很久。然后像YCF_L’ answer那样进行,例如:

    long days = ChronoUnit.DAYS.between(dateDB, dateSS);

例如,也只需将LocalDate 存储回您的数据库中

    yourPreparedStatement.setObject(4, LocalDate.now(yourZoneId));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2010-12-09
    • 2012-10-23
    相关资源
    最近更新 更多