C# 计算SQL中开始时间和结束时间的月报,不包括星期日
我有表格C# 计算SQL中开始时间和结束时间的月报,不包括星期日,c#,sql,asp.net,c#-4.0,C#,Sql,Asp.net,C# 4.0,我有表格[Mst_Daily_Report_Pds],其中我有开始时间和结束时间,它计算“11-01-2016”和“11-30-2016”之间的日期,输出将显示在图表中 例: 所以这个百分比是85%,这是错误的数据 我的问题是它也包括周日,这是不必要的。如何排除周日值 请检查以下代码: select Name,Actual_Hours,round((Actual_Hours/((DATEDIFF(DAY,'11-01-2016' ,'11-30-2016')+1)*8.5))*100,0) a
[Mst_Daily_Report_Pds]
,其中我有开始时间和结束时间,它计算“11-01-2016”和“11-30-2016”之间的日期,输出将显示在图表中
例:
所以这个百分比是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
请帮助我排除所有百分比中的星期日值。您应该创建#易于存储“11-01-2016”和“11-30-2016”之间的日期使用@@DATEFIRST排除星期日@@DATEFIRST用于将一周的第一天设置为1到7之间的数字。因此,临时表将是:
SELECT *
FROM tempTable
WHERE ((DATEPART(dw, Date) + @@DATEFIRST) % 7) NOT IN (1)
如果您的SQL数据库设置星期日是一周的第一天。您应该创建#可存储“11-01-2016”和“11-30-2016”之间的日期,使用@DATEFIRST排除星期日@@DATEFIRST用于将一周的第一天设置为1到7之间的数字。因此,临时表将是:
SELECT *
FROM tempTable
WHERE ((DATEPART(dw, Date) + @@DATEFIRST) % 7) NOT IN (1)
如果SQL数据库设置星期天是一周的第一天。您可以添加示例数据和预期结果吗?您可能还需要排除公共假日,以适应工作时间减少的日子(星期六??)您是否可以添加样本数据和预期结果?您可能还需要排除公共假日,以适应工作时间减少的日子(周六??)