2011-08-14 16 views
0

私はWebアプリケーションで作業しており、レコードの配列にフィールドを集計する必要があります。SQLクエリロジック、行のフィールドを一緒に追加する

SELECT * FROM logbook WHERE dayNight = 'D' 

今、私は何をする必要があるか、すべての合計である:この画像は次のクエリを使用してからの私の出力を示している

enter image description here

:さらに含まれる画像を見てください説明するの

これらすべてのレコードのhoursフィールドの値

6:05:21 

HHを表現:MM:SSこれが完了すると

、出力は(単なる例として)次のようなものでなければなりません。

しかし、ほんの数時間で分単位で表現したいと思います.6時間40分2秒であれば、jsut 6:40と表示されます。これは、以下の構造HH:MMとなります。

このようにする方法はわかりませんが、すべての助けてくれてありがとう!

+0

'dayNight'フィールドには文字Dが含まれています。文字Dを追加するとどのように時間が得られますか?他の列を意味する必要があります。それを明確にして、私たちがあなたに役立つはずのRDBMSであなたの質問にタグを付けてください。 –

+0

'hours'カラムに値を追加したいことがわかったので、このカラムがどのデータ型であるかを教えてください。文字列のように見えますが、文字列は簡単には追加されません。あなたはまだあなたが使用しているRDBMSで質問にタグを付ける必要があります。答えはそれに依存します。 –

+0

私はあなたのためにこれを修正しました - あなたは私が言うことを意味した通りです: '時間'フィールド。そして、私はPHPでmySQLを使用しています。 –

答えて

3

あなたは厄介な鋳造の全体の束との双方向のほとんどができます。

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

あなたtime値として結果を得られます。その後、所望の精度を得るためにtime_formatにミックス:あなたはvarcharからtimeにごhours列を変更する必要があり

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

。あなただけのこれで逃げることができ

:あなたは余分なキャストを回避したい場合

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

。しかし、外側鋳造を残すと、ちょうどsum(cast(hours as time)が23:42:11に234211のようなものを生成するので、後でデバッグするのがより簡単になるかもしれません。

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

または全てにかかわらず、dayNightの合計に:あなたの列が賢明time列に変換されていたら


、あなたはすべてのキャストと離れて行うことができます

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

これはありがたいことですが、私は悪い返答をしています:http://benjaminpotter.org/elog/iframe/index.php –

+0

私はすべての '時間'フィールドを時刻データ型に変換しました!だから私は今これについてどうやって行くべきですか?また、どのように私はdayNight値に関係なく合計時間を得るでしょうか? - もう一度お世話になります。 –

+0

@Ben:更新情報をご覧ください。私は昨夜からのクエリーの1つにタイプミスがありましたが、修正されました。 –

関連する問題