【问题标题】:How to get time if it is negative from resultset in java如果java中的结果集为负数,如何获取时间
【发布时间】:2013-07-05 13:15:12
【问题描述】:

当我运行查询时,我得到的差异是“-00:05:00”。

我在尝试通过 java 检索此值时遇到此异常

java.sql.SQLException:java.sql.SQLException 在 com.mysql.jdbc.ResultSet.getTimeFromString(ResultSet.java:6111) 在 com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:2137) 在 com.mysql.jdbc.ResultSet.getString(ResultSet.java:2076) 在 com.mysql.jdbc.ResultSet.getString(ResultSet.java:2194)

有没有办法将时差转换为字符串,如果它是负数,我可以通过 java 检索它。

select TIMEDIFF(STR_TO_DATE(std,"%H:%i"),STR_TO_DATE(SUBSTRING(deptime,(INSTR(deptime,":")-2)),"%H:%i")) as dep_diff from table 

试图用java作为检索

rs.getString("dep_diff");

问题是我正在获取两个日期时间字段的差异并将差异作为 dep_diff,我无法通过 mysql 查询将其转换为字符串。

【问题讨论】:

  • 请完整的堆栈跟踪
  • 还有一些查询代码可能对我们很有帮助。
  • 数据库中的基础列数据类型是什么。 ++ 显示实际查询。
  • 为什么你的数据库中有日期作为字符串?它们应该是日期或时间戳。

标签: java mysql


【解决方案1】:

显然您正在尝试检索 duration(这是查看两个瞬间之间时间差的另一种方式),就好像它是相对于 Unix 纪元的时间点一样。

取而代之的是检索字符串并使用您自己的代码或使用理解持续时间概念的 JodaTime 处理它。

【讨论】:

  • 感谢您的回复...但尝试 rs.getString("dep_diff");正在给出例外.. :(
  • 无论如何,现在我必须解决创建单独的 varchar 列,它工作正常.... :)
猜你喜欢
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2013-07-04
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多