2

私のテーブルは次のとおりです

労働者:

ID 整数

...

日々:

ID 整数

event_date 日付

worker_id INTEGER

時間:

ID 整数

hr_start VARCHAR2(8)

hr_stop VARCHAR2(8)

day_id INTEGER

データベース内のすべてのユーザーについて、当月の時間の合計を計算する関数が必要です。フィールド hr_start および hr_stop には、hh:mi:ss 形式の時間が含まれます。これは、Oracle データベースに必要です。

4

2 に答える 2

3

これらのテスト テーブルを 10g XE データベースに作成しました。このクエリにより、探しているものが生成されるはずです。

select worker_id,
       sum(hrs)
  from (select worker_id, 
               (to_date(hr_stop, 'hh24:mi:ss') - to_date(hr_start, 'hh24:mi:ss')) * 24 hrs
          from days d,
               hours h
         where d.id = h.day_id
           and trunc(event_date, 'mm') = trunc(sysdate, 'mm')
       )
group by worker_id
于 2009-11-08T23:38:35.407 に答える
2
SELECT w.id, SUM(DATEDIFF(h, hr_start, hr_end))
FROM workers w
INNER JOIN days d ON w.id = d.worker_id
INNER JOIN hours h ON d.id = h.day_id
GROUP BY w.id

申し訳ありませんが、私は SQL Server しか知りません。以下のリンクされた例を使用して、減算と丸めによって時間数を計算してみてください。

http://www.orafaq.com/faq/how_does_one_get_the_time_difference_between_two_date_columns

于 2009-11-08T17:37:08.607 に答える