Sto*_*ped 15 php mysql datetime
我正准备查询mySQL以获取前一周的记录,但我必须将周视为周一至周日.我原来是这样做的:
WHERE YEARWEEK(contactDate) = YEARWEEK(DATE_SUB(CURDATE(),INTERVAL 7 DAY))
Run Code Online (Sandbox Code Playgroud)
发现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')));
Run Code Online (Sandbox Code Playgroud)
这是有效的 - 它获得当周的星期一(向后走,直到星期一被击中)然后根据该日期计算前一周的日期.
我的问题是:有更好的方法吗?看起来很草率,我希望那里有人可以给我一个更干净的方法 - 或许不是因为我需要周一 - 周日周.
显然,有:
$start = date('Y-m-d',strtotime('last monday -7 days'));
$end = date('Y-m-d',strtotime('last monday -1 days'));
Run Code Online (Sandbox Code Playgroud)
这大约是可读性的一百万倍.谢谢.
mar*_*vin 32
你可以使用strtotime来处理这类日期问题
echo strtotime("last Monday");
Run Code Online (Sandbox Code Playgroud)
小智 10
(在marvin和Stomped上补充)你也可以这样使用它
echo date('Y-m-d',strtotime('-1 Monday')); //last Monday
echo date('Y-m-d',strtotime('-2 Monday')); //two Mondays ago
echo date('Y-m-d',strtotime('+1 Monday')); //next Monday
Run Code Online (Sandbox Code Playgroud)