我希望从我从MySQL数据库检索的数据中计算工作日工作的天数和周末工作的天数。
数据库中的时间格式如下: 2013-07-01 07:00
这就是我到目前为止所知道的:
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将被计为两个工作日,我如何防止这种情况发生?
谢谢。
发布于 2013-07-01 17:00:51
看看工作日函数,并将其与周日/周六的6/5进行比较(分别)
您的SQL将如下所示:
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
修复了如果放错了位置的问题
发布于 2013-07-01 17:01:57
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发布于 2013-07-01 17:03:45
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 jobcardshttps://stackoverflow.com/questions/17400570
复制相似问题