Mysql 时间差

Mysql 时间差,mysql,Mysql,我试图计算两个时间域之间的时间差。因为字段只是时间,没有日期,所以我不能使用timestampdiff,所以我使用timediff或subtime。唯一的问题是当第二次小于第一次时,它会为我返回一个负的timediff。我知道它把时间作为同一天的时间,但是有没有办法得到一个行为,它总是计算向前的时间?例如,我有23:00:00和07:00:00。 timediff'07:00:00','23:00:00'将返回负值,因为23:00大于07:00,但我希望返回8小时。有什么方法可以做到这一点吗?您

我试图计算两个时间域之间的时间差。因为字段只是时间,没有日期,所以我不能使用timestampdiff,所以我使用timediff或subtime。唯一的问题是当第二次小于第一次时,它会为我返回一个负的timediff。我知道它把时间作为同一天的时间,但是有没有办法得到一个行为,它总是计算向前的时间?例如,我有23:00:00和07:00:00。
timediff'07:00:00','23:00:00'将返回负值,因为23:00大于07:00,但我希望返回8小时。有什么方法可以做到这一点吗?

您可以通过if语句实现这一点:

select if(dateA > dateB,
          timediff(dateA, dateB),
          addtime(timediff(dateA, dateB), '24:00:00.000000'))
这样,如果第一个日期比第二个日期小,则可以将差异增加24小时