gpt4 book ai didi

java - mariadb: jdbc: setTimestamp 截断毫秒

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:32 24 4
gpt4 key购买 nike

在我看来,如果我使用 preparedStatement 将它们插入到我的 mariadb 中,毫秒数会被截断。谷歌搜索没有成功,我发现很多类似的问题已经解决或不适用。但是很难相信我是唯一遇到这个问题的人,所以我想在向 mariadb 提交错误之前先在这里问一下。代码非常简单:

表格:

create table tt (id decimal(10), create_time timestamp(6) default 0);
or
create table tt (id decimal(10), create_time datetime(6) default 0);

Java代码:

Class.forName("org.mariadb.jdbc.Driver");
Connection conn = DriverManager.getConnection(DB_URL,"root","abc");
Statement insert1 = conn.createStatement();
insert1.execute("insert into tt (id, create_time) values (1,'2013-07-18 13:44:22.123456')");
PreparedStatement insert2 = conn.prepareStatement(
"insert into tt (id, create_time) values (?,?)");
insert2.setInt(1, 2);
insert2.setTimestamp(2, new Timestamp(1273017612999L));
insert2.execute();

我的 DOS 控制台上的输出:

MariaDB [duc]> select * from tt;
+------+----------------------------+
| id | create_time |
+------+----------------------------+
| 1 | 2013-07-18 13:44:22.123456 |
| 2 | 2010-05-05 02:00:12.000000 |
+------+----------------------------+
2 rows in set (0.00 sec)

==> id=2 丢失毫秒。

您觉得这像是一个错误吗?还是我做错了什么?

操作系统:windows7,64位MariaDB 版本:10.0.12JDBC 连接器:1.1.7 (mariadb) 或 5.1.32 (mysql)

我在 Oracle 数据库上测试了相同的代码:插入毫秒数。

感谢您的帮助...

更新:我将此报告给了 mariaDB 错误数据库:https://mariadb.atlassian.net/browse/CONJ-107

最佳答案

您需要在 MariaDB JDBC 驱动程序中启用“useFractionalSeconds”。例如,“jdbc:mariadb://127.0.0.1:3306/somedb?useFractionalSeconds=true”。

(恕我直言,这应该默认启用,我不知道为什么没有。)

关于java - mariadb: jdbc: setTimestamp 截断毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com