2012-07-04 67 views
1

我正在查詢以監視正在進行的和期望的文件上載。 這裏是我正在做什麼:Mysql timediff分鐘

select time_to_sec(min(timediff(now(), f.SubmittedDate)))/60 FROM dbtable f WHERE f.Status = 'SUBMITTED'; 

現在,12小時後,這保持回國的10倍以上,那麼它應該。它會返回6200分鐘而不是620分鐘。如果我這樣做,它的工作原理:

select time_to_sec(timediff(now(), max(f.SubmittedDate)))/60 FROM dbtable f WHERE f.Status = 'SUBMITTED' 

我不明白區別,爲什麼會發生這種情況?顯然,最低時間差應該等於現在和最高日期之間的時間差。我錯過了什麼,或者這是一個錯誤?

我的問題是,我有這樣設置檢查負荷,編輯所有這些可能是一個公平的工作量。

感謝您的幫助!

+0

你有沒有考慮''爲f.SubmittedDate' NULL'值?這裏只是一個猜測。另外,'選擇所有的值,計算可能會幫助你找出問題:'select now(),f.SubmittedDate,max(f.SubmittedDate)等等。 – jadkik94

+0

f.SubmittedDate不能爲空(並且我已檢查過它,沒有值爲空)。 我檢查了最小值和最大值,但重點是:爲什麼在12小時過去後它會發生變化? :(如果它總是錯的,我會發現它。 –

+0

有趣,但很奇怪... – jadkik94

回答

4

我跑了這方面的一些測試和代碼:

select time_to_sec(min(timediff(now(), f.SubmittedDate)))/60 FROM dbtable f WHERE f.Status = 'SUBMITTED'; 

需要是:

select min(time_to_sec(timediff(now(), f.SubmittedDate)))/60 FROM dbtable f WHERE f.Status = 'SUBMITTED'; 

當你不使用「MAX」功能,就像你的第二個查詢,你需要在「TIME_TO_SEC」之前調用「MIN」功能。

希望這有助於