sql >> データベース >  >> RDS >> Sqlserver

SQLクエリを使用してTime列を合計する

    SQL フィドル

    MS SQL Server 2008 スキーマのセットアップ

    CREATE TABLE Table2 ([repID] int, [ClockIn] datetime, [ClockOut] datetime, [TotalHours] varchar(7));INSERT INTO Table2 ([repID], [ClockIn], [ClockOut], [TotalHours])VALUES (109145, '7:50:50 AM', '3:37:16 PM', '7:46:26'), (109145, '7:52:41 AM', '3:44:51 PM'、'7:52:10')、(109145、'8:42:40 AM'、'3:46:29 PM'、'7:3:49')、(109145、'7 :50:52 AM'、'3:42:59 PM'、'7:52:7')、(109145、'8:09:23 AM'、'3:36:55 PM'、'7:27 :32'); 

    クエリ 1

    select convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0), 108) from Table2group by repID 

    結果

    <プレ>| COLUMN_0 |------------| 14:02:04 |

    クエリ 2

    select sum(datediff(second,ClockIn,ClockOut))/3600 as hours_workedfrom Table2 

    結果

    <プレ>|労働時間|------------| 38 |

    クエリ 3

    select sum(datediff(minute, 0, TotalHours)) / 60.0 as hours_workedfrom Table2 

    結果

    <プレ>| HOURS_WORKED |----------------| 38 |

    ここで、最後のクエリは FreeLancers の回答から取得したものです。それが機能するかどうかを知りたいと思っていたからです。

    ここでは、まず日時の差を秒または分のいずれかに変換し、次にその時間を時間に戻す必要があります。

    これがお役に立てば幸いです。



    1. UNIONALLを使用したCASEを使用したSQLORDERBY

    2. mod rewrite、title slugs、htaccess

    3. JPAネイティブクエリを使用して同じ名前の複数の列を選択するにはどうすればよいですか?

    4. グループ化された現在の合計のための最良のアプローチ