【发布时间】:2018-01-13 08:29:50
【问题描述】:
以下是数据库中的日期:
- created_time
- 2018-01-02 04:30:00.756
下面是代码:
List<Date> dataList=new ArrayList<Date>();
query= "SELECT createdTime FROM TableName";
…
…
dataList=selectQuery.list();
for(Object data[] : dataList) {
System.out.println("Date and time -> "+data[2]); //getting one day less than the original
}
如果日期是02-01-2018,我会得到01-01-2018。
【问题讨论】:
-
检查数据库和计算机的默认时区。
-
你使用hql还是原生sql查询?你也能说明你是如何在实体中映射日期的吗?
-
您使用早已过时的
Date类有什么特别的原因吗?较新的 Hibernate 可以使用java.time.LocalDate。如果您的问题可能与时区有关,那么这将消除它。而且 java.time 更好用。此外,如果您只对日期感兴趣,而不是一天中的时间,请在数据库中使用数据类型 date。 -
大家好,感谢您的快速回复。我正在使用本机 SQL。日期基列是日期类型,时区是 UTC。我观察到的是,它一直显示一天的时间变少。
-
@pramagouni,您是说您的
date(不是datetime)类型的数据库列的值是2018-01-02 04:30:00.756?这对我来说听起来很奇怪。