我有一张桌子
Main.storyboard
可以使用简单的SQL来计算工作时间,其中指定的开始和结束时间约为0.5小时。 例如从08:30开始到18:15结束,结果是8.5小时?谢谢
答案 0 :(得分:1)
如果您只需要计算时间值并对所有时间求和,则可以使用timediff,您应该在SUM之后执行一些转换,例如TIME_TO_SEC和SEC_TO_TIME,以便以时间格式获取结果
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(end,start)))) FROM test WHERE type="work"
答案 1 :(得分:0)
您好,此查询和相关示例可以为您提供帮助:
CREATE TABLE #MyTable
(PrimaryKey int PRIMARY KEY,
DateValueBegin DATETIME,
DateValueEnd DATETIME,
TypeTime varchar(40)
);
GO
INSERT INTO #MyTable
SELECT 1, DATEADD(HOUR,-5,GETDATE()), GETDATE(), 'WORK'
UNION
SELECT 2, GETDATE(), DATEADD(HOUR,1,GETDATE()), 'LUNCH'
UNION
SELECT 3, DATEADD(HOUR,1,GETDATE()), DATEADD(HOUR,3,GETDATE()), 'WORK'
UNION
SELECT 4, DATEADD(HOUR,3,GETDATE()), DATEADD(HOUR,4,GETDATE()), 'BREAK'
UNION
SELECT 5, DATEADD(HOUR,4,GETDATE()), DATEADD(HOUR,7,GETDATE()), 'WORK';
select * from #MyTable
select TypeTime, SUM( DATEDIFF(hour, DateValueBegin, DateValueEnd)) AS 'TotalHour', SUM( DATEDIFF(MINUTE, DateValueBegin, DateValueEnd)) AS 'TotalMinutes'
from #MyTable
Group By TypeTime
DROP TABLE #MyTable
但是您会错过查询中的更多信息。
答案 2 :(得分:0)
将差值转换为分钟并累加起来:
select sum(datediff(minute, start, end)) / 60.0 as hours_working
from t
where type <> 'lunch'