【发布时间】:2018-06-18 06:11:14
【问题描述】:
以下是我使用选择查询获取当前数据库时间的方法。
public Date getDBDateTime() {
Session session = sessionFactory.getCurrentSession();
return (Date) session.createSQLQuery("select now() as date").uniqueResult();
}
此方法从数据库返回当前时间戳,但有时此方法会从数据库返回较旧的时间戳。 (有时 30 到 1 分钟)
这是我在spring中调用dao方法的服务层方法。
@Transactional
public void doSomething(){
Date now = dao.getDBDateTime();
//service specific logic
}
需要为某些事件计时计算选择数据库时间,并将数据库和应用服务器从同一时区解耦。
谁能指出我哪里出了问题并提出解决建议?
感谢期待!
【问题讨论】:
-
你的数据库和应用程序在不同的服务器/时区吗?
-
@AlpeshJikadra 目前他们在不同的服务器上,但时区相同。
-
很难重现您的问题,我建议以字符串格式获取日期并使用 Java 将该字符串转换为 LocalDateTime。
-
getDBDateTime()是否返回java.util.Date?还是其他Date? -
@RoshanaPitigala 不,它不是 java.util.Date 但它返回 java.sql.Timestamp
标签: java spring postgresql hibernate postgresql-9.4