CREATE TABLE #Attendance(OutTime DateTime, InTime DateTime)
-- Sample Data
insert into #Attendance(InTime, outTime)
values ('2015-12-12 07:30', '2015-12-12 17:30'),
('2015-12-12 07:30', '2015-12-12 17:30'),
('2015-12-13 07:30', '2015-12-13 16:45'),
('2015-12-14 07:30', '2015-12-14 14:34'),
('2015-12-15 07:30', '2015-12-15 18:21')
-- Use DateDiff function to get total minutes between times to achieve greater accuracy then with 'hour'
-- Convert total minutes to hours after adding up total minutes
SELECT SUM(DATEDIFF(MINUTE, InTime , OutTime)) /60
FROM #Attendance
DROP TABLE #Attendance
:
public class Attendance
{
public DateTime InTime { get; set; }
public DateTime OutTime { get; set; }
}
[TestClass]
public class AttendanceUser
{
[TestMethod]
public void UseALambda()
{
var rand = new Random();
var attendances = Enumerable.Range(0, 10).Select(x =>
new Attendance { InTime = DateTime.Now.AddHours(-rand.Next(x)), OutTime = DateTime.Now.AddHours(rand.Next(x)) }).ToList();
var total = attendances.Sum(x => (x.OutTime - x.InTime).TotalMinutes)/60;
}
}
Yan notu: Eğer Ocak ayının son günü içinde oluştu olayları dahil etmek istiyorsanız, söz Aşağıda belirtildiği gibi , senin
WHERE
maddesinin değiştirilmesine bir şey yok saymak için Niyetiniz Bu, Ocak ayı son günlerinde * oldu mu? Değilse, WHERE InTime> = '20160101' VE InTime <'20160201' 'olması çok daha iyi olurdu. –