Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java检索MySQL时间_Java_Mysql_Time_Resultset - Fatal编程技术网

用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())
。请注意,通过将生成的时间对象包装在println
toString()
中,将调用它。它将返回
1970-01-01 00:01:03.0
。问题是,
resultSet.getTime(“td”)
本身返回
00:01:03
,因此,
getTime()
只会向其添加0毫秒。如果是这种情况,则驱动程序使用的是
resultSet.getTime()
的实现,它会减少毫秒数。但是,如果列值为NULL,则不起作用,抛出空指针exception@ParagJadhav如果列接受空值,则必须在代码处处理空值。如果不需要空值,并且可以修改数据库,请将该列标记为not null。