如何在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中获得整数或数字的工作时间

正确的方法是使用SQL DATEDIFF函数,并使用适当的第一个参数。

计算MINMAX之间的差值,然后除以相应的刻度,得到工作小时数的小数。请记住,它将返回一个整数值,截断任何浮点数。使用分或秒来获得小数小时的工作时间。

这是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