如何在SQL中获得整数或数字的工作时间
本文关键字:数字 工作 时间 整数 SQL | 更新日期: 2023-09-27 18:06:06
我想得到每个员工每周工作的总时数。这是我现在使用的代码:
SELECT
Employee_Number
,CAST([DateTime] as Date) as 'DateTime'
,MIN([DateTime]) as 'MIN'
,MAX([DateTime]) as 'MAX'
,CONVERT(nvarchar, MAX([DateTime]) - MIN([DateTime]), 108) AS [Hours Worked]
FROM tblExtract
GROUP BY
Employee_Number, Cast([DateTime] as Date)
如您所见,由于数据类型为nvarchar,我很难得到每个员工在周末的总工作时数。我想用c#将结果转移到rdlc中。
我有两个问题:1)我有办法得到总金额吗?2)我应该把它转换成整数还是数字?
正确的方法是使用SQL DATEDIFF
函数,并使用适当的第一个参数。
计算MIN
和MAX
之间的差值,然后除以相应的刻度,得到工作小时数的小数。请记住,它将返回一个整数值,截断任何浮点数。使用分或秒来获得小数小时的工作时间。
这是1分钟颗粒:
SELECT
Employee_Number,
CAST([DateTime] AS DATE) AS [DateTime],
MIN([DateTime]) AS [Min],
MAX([DateTime]) AS [Max],
DATEDIFF(n, MIN([DateTime]), MAX([DateTime])) / 60.0 AS [Hours Worked]
FROM tblExtract
GROUP BY
Employee_Number, CAST([DateTime] AS Date)
要精确到秒级,将n
替换为ss
并除以3600.0
。