在我看来,如果我使用preparedStatement将它们插入我的mariadb中,毫秒会被截断.谷歌搜索它不成功,我发现许多类似的问题要么已经解决,要么不适用.但是很难相信我是唯一一个遇到这个问题的人,所以我想在向mariadb提交bug之前先问这里.代码很简单:
表:
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);
Javacode:
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.12 JDBC连接器:1.1.7(mariadb)或5.1.32(mysql)
我在Oracle数据库上测试了相同的代码:插入毫秒.
谢谢你的帮助...
更新:我向mariaDB错误数据库报告了这个问题:https://mariadb.atlassian.net/browse/CONJ-107