我有一个sql脚本,可以在我的基础中选择当前日期的最后三个日期,如下所示:
select distinct file_date
from my_database
where file_date > DATEADD(DAY, -3, CONVERT(date, SYSDATETIME()));
这对我来说只是周三,周四和周五,但周一我想排除工作日 例如,对于星期一,我想要星期五和当前星期一的file_date。对于星期二,我只想在星期二和星期一的file_date。 如何排除假期和工作日。 谢谢你的帮助。
答案 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天的记录。