用java检索MySQL时间
我运行以下查询以获得两倍的时差用java检索MySQL时间,java,mysql,time,resultset,Java,Mysql,Time,Resultset,我运行以下查询以获得两倍的时差 resultSet = statement.executeQuery("SELECT TIMEDIFF('14:03:55.256', '14:02:51.780') AS td"); MySQL以这种格式提供时间差 00:01:03.476 但两者都有 及 返回00:01:03 根据文档,检索此ResultSet对象当前行中指定列的值作为Java编程语言中的对象。 java.sql.Time对应于sql时间,包含小时、分钟、秒和毫秒的信息。那么为什么我得到
resultSet = statement.executeQuery("SELECT TIMEDIFF('14:03:55.256', '14:02:51.780') AS td");
MySQL以这种格式提供时间差
00:01:03.476
但两者都有
及
返回
00:01:03
根据文档,检索此ResultSet对象当前行中指定列的值作为Java编程语言中的对象。java.sql.Time
对应于sql时间,包含小时、分钟、秒和毫秒的信息。那么为什么我得到的是00:01:03
而不是00:01:03:476
我基本上想要的是将
00:01:03.476
存储到一个字符串中。是否有任何解决方法或我做错了?如果您通过打印验证结果,请注意只返回格式为hh:mm:ss
您应该真正使用rs.getTimestamp
,它将返回一个尝试执行以下操作:
String s = new SimpleDateFormat("HH.mm.ss.SSS").format(t.getTime());
其中t
是java.sql.Time
类型的变量
希望这能解决您的问题。您尝试过
resultSet.getString(“td”)
?@Stephan:是的,但它抛出java.sql.SQLException:Time'00:01:03.476'的错误格式,在第1列我正在通过System.out.println(resultSet.getTime(“td”)
和resultSet.getTimestamp()验证结果
抛出java.sql.SQLException:无法将值“00:01:03.476”从第1列转换为时间戳。
尝试此操作,然后新建时间戳(resultSet.getTime(“td”).getTime())
。请注意,通过将生成的时间对象包装在printlntoString()
中,将调用它。它将返回1970-01-01 00:01:03.0
。问题是,resultSet.getTime(“td”)
本身返回00:01:03
,因此,getTime()
只会向其添加0毫秒。如果是这种情况,则驱动程序使用的是resultSet.getTime()
的实现,它会减少毫秒数。但是,如果列值为NULL,则不起作用,抛出空指针exception@ParagJadhav如果列接受空值,则必须在代码处处理空值。如果不需要空值,并且可以修改数据库,请将该列标记为not null。