使用 JDBC 添加相同日期后,MySql 给我错误的日期

标签 mysql jdbc

我正在使用 JDBC 将一些行添加到我的数据库中,它们具有日期方面。

我在提交中添加的日期的 GMT 字符串是

11 Jan 2014 05:00:00 GMT

但是当我拿回来时,我得到了这个:

11 Jan 2014 04:00:00 GMT

我比我的服务器早 1 小时,这可能是问题的一部分。我尝试使用日期时间和时间戳,但这些都没有解决我的问题。

我的 JDBC 查询如下所示:(在 Scala 中)

        val statement = connection.prepareStatement("INSERT INTO `listings`(`track_id`, `date`, `position`) VALUES (?,?,?)");
        statement.setInt(1, trackId);
        statement.setDate(2,trackListing.date);
        statement.setInt(3, trackListing.position);
        statement.execute();

有什么办法可以避免这个问题吗?

最佳答案

事实证明,通过将 setDate 和 getDate 更改为 setTimestamp 和 getTimestamp 我可以修复它。我最终只是将时间戳包装为日期以保持兼容性,使用:

   new java.sql.Date(rs.getTimestamp("date").getTime());

希望这可以帮助将来遇到同样问题的其他人。

关于使用 JDBC 添加相同日期后,MySql 给我错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000324/

相关文章:

python - 使用 Django webapp 和 MySQL 进行多主数据库复制

java - Hibernate:如何选择除最后 N 行以外的所有行?

mysql - 使用外键创建表的 SQL 语句不正确?

mysql - 连接返回空值

java - MS_Access中如何比较Integer类型记录和String类型记录?

jdbc - 由于jdbc驱动加载,Tomcat无法启动

java - 将哪些方法实现到 "correct"DAO 类中?

php - 获取 php 中最后执行的 mysqli 查询的结果,并在另一个查询中使用结果

java - PreparedStatement 中的 IN 子句

java - 具有数据加密功能的 PostgreSQL JDBC 驱动程序