0

誰でも助けることができますか?日時フィールドと期間を持つテーブルがあります.必要なのは、ある日に発生したレコードをマージすることです...以下のように、最初の列は日付、2番目の列は利用可能な時間数、次に分を示しています... ご覧のとおり、午前と午後があります。必要なのは、1 日ごとに 1 つのレコードと合計期間を選択することです。2004 年 7 月 10 日のレコードは 1 つだけで、期間カウントは 7 時間 30 と表示されます。分。

2004-10-07 09:00:00.000 4   0
2004-10-07 14:00:00.000 3   30
2004-10-08 09:00:00.000 4   0
4

3 に答える 3

1

SUMおよびGROUP BYコマンドをサポートするデータベースを使用している場合は、次を試してください。

これは sqlite3 では問題なく動作します。

SELECT date(date), (sum(hours)*60+sum(minutes))/60, sum(minutes)%60
FROM dates
GROUP BY date(date)

これは、コメントのフォローアップの質問に対する回答です。

SELECT
date(free.date),
(SUM(hours)*60+SUM(free.minutes))-
(SELECT (SUM(hours)*60+SUM(used.minutes))
    FROM used
    WHERE date(used.date)=date(free.date))
FROM free
WHERE date(free.date) IN (SELECT DISTINCT date(used.date) FROM used)
GROUP BY date(free.date);
于 2013-09-19T11:29:03.907 に答える
0

アイデアは、日時を日付に変換し、それによってグループ化することです。次に、時間と分を合計します。それらを分として合計するのは簡単60*h + mです。ただし、これを時間と分に分割するには、少し計算が必要です。

1 つの方法を次に示します。

select cast(dt as date),
       cast(sum(h * 60 + m)/60 as int) as hours,
       sum(h * 60 + m) - 60 * cast(sum(h * 60 + m)/60 as int) as minutes
from t
group by cast(dt as date);

残念ながら、日付に変換するための具体的な操作はデータベースによって異なります。また、「モジュラス」操作の構文はデータベースによって異なる場合があるため、これは計算を直接行うより安全な方法をとります。

于 2013-09-19T11:25:32.127 に答える
0

これは 3 つの手順で行うことができます。

  • 日付自体に時間と分を追加します
  • そして、同じ日の 2 つの日付の差を取ります (これにより、その日の合計時間が得られます)
  • 次に、日付と時間を別々に表示します
于 2013-09-19T11:24:06.337 に答える