我从数据库表中读取了一些员工发帖的时间。时间存储为时间(无时区)。
表
CREATE TABLE "dba"."mytable" (
"id" INTEGER NOT NULL DEFAULT AUTOINCREMENT UNIQUE,
"employeenr" CHAR(7 CHAR) NOT NULL,
"time" TIME NOT NULL
PRIMARY KEY ( "id" ASC)
) IN "system";
表数据看起来像
id time employeenr
1 09:35 123
2 10:00 123
3 00:30 123
从我的应用程序中读取时间在0:00到00:59之间的任何数据会导致时间值为23:xx。 使用SQL Central读取它可以为我提供正确的时间值。
应用程序在Tomcat 8上运行,数据库为SQL Anywhere 17
使用Hibernate(hql /本机SQL查询)以及java.sql时会发生此问题。
String sql = "select * from mytable order by time";
Statement st = c.createStatement();
ResultSet result = st.executeQuery(sql);
while (result.next()) {
String nr = result.getString("employeenr");
Time time = result.getTime("time");
Date date = result.getDate("time");
System.out.println(nr + " " + time + " / " + date);
}
结果
123 23:30:00 / 0001-01-01
123 09:35:00 / 0001-01-01
123 10:00:00 / 0001-01-01