如何获取最后三天,不包括SQL或PHP中的假日(法语)和工作日

时间:2017-12-07 12:34:53

标签: php sql sql-server

我有一个sql脚本,可以在我的基础中选择当前日期的最后三个日期,如下所示:

select distinct file_date 
from my_database 
where file_date > DATEADD(DAY, -3, CONVERT(date, SYSDATETIME()));

这对我来说只是周三,周四和周五,但周一我想排除工作日 例如,对于星期一,我想要星期五和当前星期一的file_date。对于星期二,我只想在星期二和星期一的file_date。 如何排除假期和工作日。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

没有样本数据和数据库结构,我也认为你有MYSQL数据库所以我只是提示如何在MYSQL中做到这一点 您可以使用WEEKDAY()作为星期几的过滤器。 例如,这在普通查询中仅过滤星期一到星期五的结果:

SELECT *
FROM some_table
WHERE WEEKDAY(date_field) < 5 

您也可以在php中执行此操作。将结果增加到5行(包括可能的周末)并按降序日期对结果进行排序。

//you have $results array with 5 elements
$lastThreeDays = [];
$i = 0;
foreach ($results as $res) {
    $tStamp = strtotime($res['date_field']);
    $weekDay = date('N',$tStamp);
    if ($weekDay < 6 && $i < 3) {
        $lastThreeDays[] = $res;
        $i++;
    }
}

除了工作日,你有3条过去3天的记录。