php的时差在某些时间间隔内变为负值

时间:2016-06-10 20:30:03

标签: php mysql

$updateLog = "UPDATE `tablename` 
              SET `TotalTimeLoggedIn`= (
                SELECT TIMEDIFF( `LoggedOut` , `LoggedIn` ) ) 
              WHERE id = '$id'";

我的登录值已经存储,启动上述查询时的已注销值

DateLoggedIn 2016-06-06 
LoggedIn 12:50:38   
DateLogged Out 2016-06-06
LoggedOut 04:36:57  
TotalTimeLoggedIn -08:13:41

它适用于11:20AM11:50AM之类的值,但不适用于11:20 AM12:15 PM的值,其中我也会得到否定值

1 个答案:

答案 0 :(得分:0)

TIMEDIFF( `LoggedOut`,`LoggedIn` )TIMEDIFF()返回04:36:57 - 12:50:38表示为时间值。这等于-08:13:41。

您的登录时间是2016-06-06 12:50:38,退出时间是2016-06-06 04:36:57登录后似乎登录完成。(登出时间为04.36 AM,当天下午12点50分登录)。根据24小时制,这看起来不正确。

如果您仍然认为它在12PM和4PM之间的区别尝试这样的话,

IF(TIMEDIFF(`LoggedOut`,`LoggedIn`)<0,
  ADDTIME(TIMEDIFF(`LoggedOut`,`LoggedIn`),12:00:00),
  TIMEDIFF(`LoggedOut`,`LoggedIn`)
)