获取上周一 - 周日的日期:有没有更好的方法?
我正在为mySQL准备一个查询,以获取前一周的记录,但我必须将周视为周一至周日。我最初这样做:
WHERE YEARWEEK(contactDate) = YEARWEEK(DATE_SUB(CURDATE(),INTERVAL 7 DAY))
发现mySQL将周视为星期日 - 星期一。因此,我正在解析php中的开始和结束日期,如下所示:
$i = 0;
while(date('D',mktime(0,0,0,date('m'), date('d')-$i, date('y'))) != "Mon") {
$i++;
}
$start_date = date('Y-n-j', mktime(0,0,0,date('m'), date('d')-($i+7), date('y')));
$end_date = date('Y-n-j', mktime(0,0,0,date('m'), date('d')-($i+1), date('y')));
这有效 - 它获取当前星期一的日期(向后走,直到星期一被击中),然后根据该日期计算前一周的日期。
我的问题是:有没有更好的方法来做到这一点?只是看起来很草率,我希望有人能给我一个更干净的方式来做到这一点 - 或者也许不是因为我需要周一 - 周日的几周。
编辑
显然,有:
$start = date('Y-m-d',strtotime('last monday -7 days'));
$end = date('Y-m-d',strtotime('last monday -1 days'));
这大约是可读性的一百万倍。谢谢。