我需要得到行的总数,其中结束日期和开始日期的差异小于或等于2.但我需要跳过星期六和星期日,例如我的开始日期是11-29- 2012年和结束日期是12-03-2012我应该得到2而不是4的差异因为12-1-2012是坐着的,12-2-2012是星期天。
DateE是开始日期 ReplayDate是结束日期
SELECT
DATE_FORMAT(DateE, '%Y-%m-%d') AS startdate,
DATE_FORMAT(ReplyDate, '%Y-%m-%d') AS replydate,
DATEDIFF(ReplyDate,DateE) as diff
FROM emailtodb.emailtodb_email
WHERE
Status = 2
AND
DATEDIFF(ReplyDate,DateE)<=2
AND
DATE_FORMAT(DateE, '%Y-%m-%d')
BETWEEN
'2012-11-29' AND '2012-12-12'
AND
TIME_FORMAT(DateE, '%H:%i:00')
BETWEEN
'00:00' AND '23:59'
答案 0 :(得分:0)
您可以在php脚本中查看它。获取startDate和endDate以及dateDifference后,请检查
$startDay = date('l', $startDate);
$endDay = date('l', $endDate);
if ($dateDifference < 4){
if ( $startDay == 'Saturday' || $startDay == 'Sunday' ){
$dateDifference--;
}
if ( $endDay == 'Saturday' || $endDay == 'Sunday' ){
$dateDifference--;
}
}
else{
$totalWeek = (int) $dateDifference / 7;
$dateDifference -= ($totalWeek + 1)*2;
if ($startDay == 'Saturday' && $endDay = 'Saturday')
$dateDifference++;
else if ($startDay == 'Sunday' && $endDay = 'Sunday')
$dateDifference++;
else
{
if($endDate == 'Saturday')
$dateDifference++;
if ($startDay == 'Sunday')
$dateDifference++;
}
}
我没有编译代码,但我希望它能正常工作