【问题标题】:monthly report to calculate start time and end time in SQL excluding Sunday以 SQL 计算开始时间和结束时间的月报表,不包括星期日
【发布时间】:2016-12-15 03:52:02
【问题描述】:

我有表格[Mst_Daily_Report_Pds],其中有开始时间和结束时间,它计算“11-01-2016”和“11-30-2016”之间的日期,输出将显示在图表中。

例如:

8.5hrs * 7days = 59.5hrs,
8.5hrs * 6days = 51hrs 

所以百分比是 85%,这是错误的数据。

我的问题是它也包括星期日,这没有必要如何排除星期日的值?

请检查以下代码:

select Name,Actual_Hours,round((Actual_Hours/((DATEDIFF(DAY,'11-01-2016'  ,'11-30-2016')+1)*8.5))*100,0) as percentage 
from (select Name , SUM(actual_Hours) Actual_Hours  
from ( select Name,ACTUAL_HOURS=sum(DATEPART(hh,[Time_Taken_in_Min]))+sum(DATEPART(MINUTE,[Time_Taken_in_Min])) /60  
FROM [HR_Admin].[dbo].[Mst_Daily_Report_Pds]  where date between  '11-01-2016'  and  '11-30-2016'   
    GROUP BY  Name )o group by Name  )a order by Actual_Hours desc

请帮助我排除所有百分比中的星期日值。

【问题讨论】:

  • 可以添加示例数据和预期结果吗?
  • 您可能还需要排除公共假期并满足工作时间减少的日子(星期六??)

标签: c# sql asp.net c#-4.0


【解决方案1】:

您应该使用@@DATEFIRST 创建#tempTable 来存储“11-01-2016”和“11-30-2016”之间的日期,不包括星期日。 @@DATEFIRST 用于将一周的第一天设置为从 1 到 7 的数字。因此临时表将为:

SELECT *  
FROM tempTable
WHERE ((DATEPART(dw, Date) + @@DATEFIRST) % 7) NOT IN (1)  

如果您的 SQL 数据库将星期日设置为一周的第一天。

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 2012-04-20
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2012-10-10
    相关资源
    最近更新 更多