sql >> Database teknologi >  >> RDS >> Sqlserver

Opsummer tidskolonnen ved hjælp af sql-forespørgsel

SQL Fiddle

MS SQL Server 2008 Schema Setup :

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')
;
 

Forespørgsel 1 :

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0),  108)
from Table2
group by repID
 

Resultater :

| COLUMN_0 | ------------ | 14:02:04 |

Forespørgsel 2 :

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

Resultater :

| hours_worked| ------------ | 38 |

Forespørgsel 3 :

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

Resultater :

| HOURS_WORKED | ---------------- | 38 |

Her er den sidste forespørgsel taget fra FreeLancers svar, da jeg var ivrig efter at vide, om det virker eller ej.

Her skal du først konvertere din dato og klokkeslætsforskel til enten sekund eller minut og derefter konvertere den tid tilbage til timen.

Håber dette hjælper.



  1. Bedste praksis til at identificere en jsonb null i plpgsql

  2. Er navn et særligt søgeord i PostgreSQL?

  3. Indvirkning på applikation ved migrering fra sql server 2005 til 2008

  4. Er der nogen præstationsgevinst ved at indeksere et boolesk felt?