Php 如何计算当月的“星期日”来计算缺勤员工

Php 如何计算当月的“星期日”来计算缺勤员工,php,mysql,sql,database,Php,Mysql,Sql,Database,我在计算员工一个月的缺勤率时遇到问题。在我的查询中,它仍然计算本月的“星期日”,这不应该计算在内 这是使用的示例数据库: emp0003表的 尼克 名称 01190301 苏珊 如果我理解正确,您需要计算周一至周六工作日的员工缺勤情况。要实现这一目标,您需要知道给定日期范围内的工作日数以及这些天内任何员工的在场情况 考虑到离开dvc0004,您可以通过下面的代码行轻松计算周一至周六期间员工的存在。注册,10表示有效日期 (CASE WHEN weekday(LEFT ( ( `dvc0004`.

我在计算员工一个月的缺勤率时遇到问题。在我的查询中,它仍然计算本月的“星期日”,这不应该计算在内

这是使用的示例数据库:

emp0003表的

尼克 名称 01190301 苏珊
如果我理解正确,您需要计算周一至周六工作日的员工缺勤情况。要实现这一目标,您需要知道给定日期范围内的工作日数以及这些天内任何员工的在场情况

考虑到离开dvc0004,您可以通过下面的代码行轻松计算周一至周六期间员工的存在。注册,10表示有效日期

(CASE WHEN weekday(LEFT ( ( `dvc0004`.`Enroll` ), 10 ) )>0 then 1 else 0 end) AS 'TOTAL ABSENT OF THE MONTH'
但是,仅仅从当前的_日期中减去计数是行不通的。你还需要考虑当月第一天的星期日和当前日期。我在这里分享一个链接,以实现以下目标:


您可以使用下面的查询

SELECT  (total_day_of_month-Total_holiday_till_Now-Total_Valid_Attendance) AS Total_absence FROM
(SELECT SUM(CASE WHEN  DAYOFWEEK(dvc0004.Enroll)<>1 then 1 ELSE 0 END) AS Total_Valid_Attendance,
DAY(CURRENT_DATE) AS total_day_of_month,
  ROUND((
      (unix_timestamp(CURRENT_DATE) - unix_timestamp(DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY)) ) /(24*60*60)
      -7+WEEKDAY(DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY))-WEEKDAY(CURRENT_DATE)
    )/7)

 + if(WEEKDAY(DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY)) <= 6, 1, 0)
 + if(WEEKDAY(CURRENT_DATE) >= 6, 1, 0) AS Total_holiday_till_Now   
FROM emp0003
LEFT  JOIN dvc0004 ON emp0003.NIK = dvc0004.NIK      
WHERE emp0003.nik = '01190301' 
AND MONTH(CURRENT_DATE)=MONTH(dvc0004.Enroll) 
AND YEAR(CURRENT_DATE)=YEAR(dvc0004.Enroll) ) AS  main_query

如果您想要高质量的答案而无需长时间等待,请提供db fiddle演示。这是SQLServer还是MySQL?对于这些问题,必须使用DDL+DML的示例数据和预期结果。我已经添加了示例数据库、我的查询结果和我想要的结果@mickmackusa@DaleK:我已经添加了一个示例数据库、我的查询结果和我想要的结果。db fiddle演示程序在哪里?我的志愿者主要来自我的手机,所以我很少花时间创建一个模式来解决其他人的问题。有了db提琴,你的问题就更容易回答了。试试这个/代码-只有答案是低价值的堆栈溢出,因为他们错过了教育/授权OP和数千名未来研究人员的机会。