【发布时间】:2023-03-30 12:16:02
【问题描述】:
我有一个很长的 SQL 查询,用于针对特定“区域”中的所有用户在给定月份计算他们“值班”的天数。这分为周末和工作日。这是 php/SQL 语句:
$result = mysql_query("
SELECT fname, lname, MONTH( eventDate ) AS MONTH ,
SUM( IF( WEEKDAY( eventDate ) <=2, 1, 0 )
OR IF( WEEKDAY( eventDate ) = 6, 1, 0 )) AS WeekdayCount,
SUM( IF( WEEKDAY( eventDate ) = 4, 1, 0 )
OR IF( WEEKDAY( eventDate ) = 5, 1, 0 )
OR IF( WEEKDAY( eventDate ) = 3, 1, 0 )) AS WeekendCount,
SUM( IF( secondary =0, 1, 0 ) ) AS `Primary`,
SUM( IF( secondary =1, 1, 0 ) ) AS `Secondary`
FROM eventcal AS e
LEFT JOIN users AS u ON e.primary = u.username
WHERE e.region = '$region' AND MONTH( eventDate ) = '$month'
GROUP BY fname, lname, MONTH( eventDate )
ORDER BY lname
");
很遗憾,对于不同的地区,一周中的不同日子被视为周末和工作日 - 正如您在上面看到的那样。所以星期天可能不被认为是周末。但这在这里并不重要。
我的问题是,我想说:“不要将 2009 年 10 月 10 日至 2009 年 10 月 13 日之间的任何日子都包括在计数中。
有谁知道我可以如何修改这个 SQL 来说明这一点?或者有什么我可以写的PHP小脚本?
谢谢!
【问题讨论】: