每月报告计算SQL中的开始时间和结束时间,不包括星期日

时间:2016-12-15 03:52:03

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

我有表格[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

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

1 个答案:

答案 0 :(得分:0)

您应该使用@@ DATEFIRST创建#tempTable,以便将日期存储在'11 -01-2016'和'11 -30-2016'之间,排除星期日。 @@ DATEFIRST用于将一周的第一天设置为1到7之间的数字。因此临时表将是:

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

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