当我从mysql表中检索一个日期时,它总是返回前一天的日期,日期格式是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;
}
当我打印列表时,所有的日期都是在我的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来为我做剩下的事情,如果你需要任何我没有提供的代码,请问我。提前打电话。
抱歉英语不好!
2条答案
按热度按时间wr98u20j1#
我曾经遇到过这个问题,原因是mysql配置的默认时区。因此,首先检查您在以下查询中使用的时区。
如果不是所需的时区,请尝试进入mysql配置文件并添加以下行。
记住将其设置为所需的时区。您需要重新启动mysql才能进行更改。这种变化将是永久性的。
osh3o9ms2#
我发现需要做什么,我改变了hql查询,我不知道确切的原因,但当我这样做
很管用!!!!