首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP/ MySQL统计工作日和周末的天数

问用PHP/ MySQL统计工作日和周末的天数
EN

Stack Overflow用户
提问于 2013-07-01 16:54:41
回答 4查看 2.3K关注 0票数 3

我希望从我从MySQL数据库检索的数据中计算工作日工作的天数和周末工作的天数。

数据库中的时间格式如下: 2013-07-01 07:00

这就是我到目前为止所知道的:

代码语言:javascript
复制
function isWeekend($date) {
    $check = date("w", strtotime($date));
        if ($check == 6 || $check == 0) {
            return 1;
        }
        else {
            return 0;
        }
}

$query = mysql_query ("SELECT date from jobcards");

while ($row = mysql_fetch_assoc($query)) {
  $date = $row['date'];
  $date_check= isWeekend($date);

  if ($date_check == 1) {
  ++$weekend;
  }
  else {
  ++$workday;
  }

}

我需要找到一种使用mysql来计算时间的方法,有没有这样的方法或者更优雅的方法来改进PHP代码?

另外,如果我在数据库中有多个日期范围相同但时间不同的记录,例如: 2013-07-01 07:00和2013-07-01 07:30将被计为两个工作日,我如何防止这种情况发生?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-01 17:00:51

看看工作日函数,并将其与周日/周六的6/5进行比较(分别)

您的SQL将如下所示:

代码语言:javascript
复制
SELECT SUM(IF(WEEKDAY(date) >= 5, 1, 0) AS WeekendCount,
       SUM(IF(WEEKDAY(date) < 5, 1, 0) AS WeekdayCount
FROM jobcards

这里有一个类似的答案:MySQL Weekday/Weekend count - Part II

修复了如果放错了位置的问题

票数 9
EN

Stack Overflow用户

发布于 2013-07-01 17:01:57

代码语言:javascript
复制
SELECT SUM(IF(DAYOFWEEK(date) BETWEEN 2 AND 6,1,0) AS weekdays,
SUM(IF(DAYOFWEEK(date) NOT BETWEEN 2 AND 6,1,0) AS weekends,
FROM jobcards
票数 1
EN

Stack Overflow用户

发布于 2013-07-01 17:03:45

代码语言:javascript
复制
SELECT date, 
sum(date) total, 
sum(if(date_format(date,'%w') between 1 and 5),1,0) weekday,
sum(date) - sum(if(date_format(date,'%w') between 1 and 5),1,0) weekend
from jobcards
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17400570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档