SQL:根据上下班时间,统计加班时间。

2024-11-29 17:38:01
推荐回答(3个)
回答1:

可以通过精确到分钟来查询比如:select datediff(mi,'2011-3-24 8:30:00', cast( convert( nvarchar,getdate(),120)as datetime))
group by userid那么得出 从上班开始到当前时间的一个差值一天从早上8点30到17点30下班 那么就是9个小时, 9*60 =540分钟你将这个时间减上面查询出的时间差,如果是负数,就是他加班的分钟数了.分钟知道了,小时就不用说了吧~~~~~~~

回答2:

create table tt(
id int primary key identity(1,1),
name varchar(20),
time1 datetime,
time2 datetime
)insert tt values('zhangsan','2011-03-20 08:30:00.000','2011-03-21 07:30:00.000')
insert tt values('lisi','2011-03-20 08:30:00.000','2011-03-21 05:30:00.000') Datetime格式包含年月日,不正好符合计算两个时间的分钟差...' 17:30'这个字符串前面要加个空格不然不能隐性转换为DateTime格式SELECT Name,Sum(datediff(mi,Convert(varchar(10),Time1,120)+' 17:30',Time2)/60.0) From tt Group by Name

回答3:

create table tt(
id int primary key identity(1,1),
name varchar(20),
time1 datetime,
time2 datetime
)insert tt values('zhangsan','8:30','20:00')
insert tt values('lisi','8:30','21:00')select name, sum(datediff(mi,'17:30',time2)) from tt group by name 仅供参考!