使用JDBC的"通用"当前时间函数

 yax何 发布于 2023-01-15 15:41

当我们使用JPA和JPQL时,我们可以使用一些日期/时间表达式来使查询DMBS独立.例如,假设我想在数据库中设置会话的结束时间,我可以简单地使用CURRENT_TIMESTAMP表达式,如下所示:

String jpql = "UPDATE SessionJpa s SET s.end = CURRENT_TIMESTAMP WHERE s.id = :id";

entityManager.getTransaction().begin();
Query query = entityManager.createQuery(jpql);
            query.setParameter("id", someIdValue);
            query.executeUpdate();
entityManager.getTransaction().commit();

这样,相同的JPQL应该与Oracle,MySQL,PostreSQL等一起用作DBMS.

现在我的问题是:在使用JDBC而不是JPA时,有没有办法实现相同的目标?

这是我到目前为止:

String sql = "UPDATE Sessions SET end = SYSDATE WHERE id = ?";

try (Connection connection = dataSource.getConnection();
    PreparedStatement statement = connection.prepareStatement(sql)) {

        statement.setLong(1, someIdValue);
        int updatedRows = statement.executeUpdate();

} catch(SQLException ex) {
    Logger.getLogger(SessionsBean.class.getName()).log(Level.SEVERE, null, ex);
}

但当然SYSDATE不是通用表达式,它最有可能只作为DBMS使用Oracle.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有