2011-08-14 48 views
0

我正在開發一個web應用程序,並且需要總計一個字段的一組記錄。SQL查詢邏輯,將行的字段添加在一起

爲了進一步說明請看包括圖像:

enter image description here

該圖像描述了從使用以下查詢我的輸出:

SELECT * FROM logbook WHERE dayNight = 'D' 

現在我需要做的是總所有所有這些記錄的hours字段中的值。

一旦做到這一點,輸出應該是下面的(就像一個例子)的東西:

6:05:21 

代表HH:MM:SS。

但是我想在幾小時和幾分鐘內用十進制數來表示......所以如果我有6小時40分鐘和2秒鐘,它會說6:40。這將是以下結構HH:MM。

所以我不知道如何做到這一點 - 但謝謝你的所有幫助!

+0

'dayNight'字段包含字母D.如何在一段時間內添加字母D?你必須指其他一些專欄。請澄清,並用我們應該幫助您的RDBMS標記您的問題。 –

+0

現在我們知道您想要在「小時數」列中添加值,請分享此列中的數據類型。它看起來像一個字符串,而字符串不容易添加。您仍然需要使用您正在使用的RDBMS標記問題。答案將取決於此。 –

+0

我已經解決了這個問題 - 你是對的我的意思是說:'小時'領域。我正在使用mySQL與PHP。 –

回答

3

可以大部分地用一大堆討厭的鑄造:

select cast(sum(cast(hours as time)) as time) 
from logbook 
where dayNight = 'D' 

這將會給你一個結果作爲time值。然後在time_format混合,以獲得所需精度:

select time_format(cast(sum(cast(hours as time)) as time), '%H:%i') 
from logbook 
where dayNight = 'D' 

您應該將hours列改變從varchartime

你可以擺脫眼前這個:

select time_format(sum(cast(hours as time)), '%H:%i') 
from logbook 
where dayNight = 'D' 

如果你想避免額外的鑄造;然而,將外部鑄件留在後面可能會使事情更容易調試,因爲sum(cast(hours as time)爲23:42:11產生類似234211的東西。


一旦你的列已轉換爲明智time列,那麼你就可以用所有的鑄造做掉:

select time_format(sum(hours), '%H:%i') 
from logbook 
where dayNight = 'D' 

或總結的所有不管dayNight

select time_format(sum(hours), '%H:%i') 
from logbook 
+0

非常感謝堆,我收到了不好的迴應:http://benjaminpotter.org/elog/iframe/index.php –

+0

我已經將所有'hours'字段轉換爲時間數據類型!那麼我現在應該怎麼做呢?另外,無論dayNight值如何,我將如何獲得總時間? - 再次感謝堆@mu對於幫助太短了! –

+0

@Ben:請參閱我的更新。我昨天晚上的其中一個疑問也有一個錯誤,那個問題已經解決了。 –