计算2个时间(0)列之间的工作时间

时间:2017-01-22 09:29:42

标签: sql stored-procedures

请检查屏幕截图,以便您了解列和我的需求。

enter image description here

我的问题是:

1) 我有2列,from_time,until_time。 我需要计算差异,以便我可以报告小时数。 示例:from_time = 11:35,till_time = 12:35> time_worked = 01:00

如何进行计算,以便我可以进行选择,并报告类似"选择总计' working_hours'分组由Can_bill'"

组成

2) 我有一些程序:

SELECT
       [ROW_ID]
      ,[User_Name]
      ,[Date]
      ,[From_Time]
      ,[Till_Time]
      ,[Customer_Name]
      ,[Product_Name]
      ,[Type_Of_Service]
      ,[Can_Bill]
      ,[Type_Impliment]
      ,[Notes]
  FROM [SG_Hours].[dbo].[Working_Hours_CheckIn]
Where User_Name = '@Login'
      And MONTH(Date) = MONTH(GetDate())

现在,我需要创建相同的东西,但是我没有获取最新的月份报告,而是需要用户选择月份,然后输出特定月份的报告。 (它在BI应用程序上实现,因此我只需要代码\过程,并且UI将得到充分肯定。)

非常感谢!!!你是最好的

1 个答案:

答案 0 :(得分:0)

这将给出Time Worked(分钟):

SELECT (CONVERT(INT, REPLACE(
                       CONVERT(VARCHAR(8), till_time, 108),
                       ':',
                       ''
                    )
              )  - 
CONVERT(INT, REPLACE(
                       CONVERT(VARCHAR(8), from_time, 108),
                       ':',
                       ''
                    )
              )   ) As time_worked FROM [SG_Hours].[dbo].[Working_Hours_CheckIn]

如果您想将分钟转换为Time,可以将其转换为:

set @num = 1500000;  -- the resault of minutes            


select dateadd(hour, (@num / 1000000) % 100,
       dateadd(minute, (@num / 10000) % 100,
       dateadd(second, (@num / 100) % 100,
       dateadd(millisecond, (@num % 100) * 10, cast('00:00:00' as time ))))) As time_worked 
相关问题