2013-02-16 46 views
1

在MySQL中,我试图获得两个时间戳值之间的差异并将结果存储在时间列中。但有时结果会以'hhh:mm:ss'格式出现。在尝试使用Result.getTime()在Java中访问该列时,它会抛出错误,说'错误的格式为xMySql - 时间'hhh:mm:ss'在x列中的格式不正确

为了获得更好的想法,请在time列中存储以下查询的结果,并尝试在Java中访问此值。

SELECT SEC_TO_TIME(ABS(TIMESTAMPDIFF(SECOND,'2013-01-26 19:03:48','2013-02-15 06:59:36'))) as 'RESULT'; 

我应该怎么做才能得到结果,即使有“HHH:MM:SS”格式(没有任何错误)?

在此先感谢。

+0

那么你有什么问题? – Jason 2013-02-16 10:55:18

+0

修改了说明。谢谢 – Prateek 2013-02-16 11:05:17

+0

@Prateek - 我的朋友问题不清楚。 Mysql timestampdiff函数以小时:min:sec格式返回时差。如果小时差超过99,那么它将采用hhh格式。它有什么问题?请尝试解释您的需求,以便我们可以为您提供解决方案 – 2013-02-16 11:14:47

回答

0

我假设你运行的查询和结果集包含结果

String hourMinSec=resultset.getString("RESULT"); 
String[]result=hourMinSec.split(":"); 
int hour=Integer.parseInt(result[0]); 
int min=Integer.parseInt(result[1]); 
int second=Integer.parseInt(result[2]); 

表达两个日期之间的差异为日期是没有意义的,我认为。只是回答你的问题,如果你想创造时间,你可以使用以下

Time time =new Time(hour, min, second);  

但我觉得它没有意义。

+0

@Fathah:在Java端,我将此值存储在java.sql.Time对象并抛出该错误。 在用户界面上,我只是将此值显示为小时分钟和秒钟。 – Prateek 2013-02-16 18:31:07

+0

@Fathah:假设该列中的值是'10:10:10'。我在java中使用这个值:Time result = resultSet.getTime();在那个时候,我得到'坏格式的时间'异常 – Prateek 2013-02-16 18:37:46

0

您不能将两个日期之间的差异表示为另一个日期。例如,如果你将有31天的差异,你不能说它是1个月还是1个月和1天。

您应该创建自己的对象来存储这些数据。

相关问题