首页 > 解决方案 > 休眠查询返回错误的日期

问题描述

当我从 mysql 表中检索日期时,它总是返回 1 天前的日期,日期格式为 yyyy-MM-dd,所以如果我在打印结果时有 2018-10-17,它会作为 2018-10-16 . 如果我使用命令行检查日期,它们是正确的。这是 Dao 类中检索日期的方法:

public List<LocalDate> getDates(String username){
    List<LocalDate> dates;
    Query query = manager.createQuery("select date from Calendar where username =:username");
    query.setParameter("username",username);
    dates = query.getResultList();
    return dates;
}

当我打印列表时,所有日期都是在 1 天前打印的,就像我在我的 sql 上一样。

这就是我在 servlet 上获取日期并使用 hibernate 将日期存储在 mysql 上的方式。

String dateString = request.getParameter("date");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dataInicial = LocalDate.parse(dataInicialString, formatter);

我在 mysql 中使用的数据类型是 DATE。然后我用 hibernate 为我做剩下的事情,如果你需要任何我没有提供的代码,请问我。提前谢谢。

对不起英语不好!

标签: javamysqlhibernatedatesimpledateformat

解决方案


我找到了需要做的事情,我更改了 HQL 查询,我不知道确切原因,但是当我这样做时

Query query = manager.createQuery("select DATE_FORMAT(date,'%Y-%m-%d') from Calendar where username =:username");

有用!!!!


推荐阅读