【发布时间】:2011-01-25 15:16:16
【问题描述】:
我正在为 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'));
这大约是可读性的一百万倍。谢谢。
【问题讨论】: