这与我现在的相似,即:
SELECT COUNT(作者)FROM`posst` WHERE`date`> = DATE_SUB(CURDATE(),INTERVAL 1 WEEK)AND author =’FooBar’
这将给我一个作者在过去一周内发布的次数.
如果我要在周日下午5:30运行该程序来查找上周日中午12:00至本周日中午12:00的帖子,我想反而拥有它.同样地,如果我忘了在星期天运行它,现在是星期一.我仍然希望它从上周日中午12:00到凌晨12点的周日运行
编辑:
我已经完成了我需要使用PHP来形成正确的sql语句,但我仍然很好奇如何在sql中执行此操作.
PHP
$dayofweek = strftime("%A",time());
if($dayofweek == "Sunday") {
$last_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday'));
$this_sunday = date('Y-m-d h:i:s',strtotime('Sunday'));
} else {
$last_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday',strtotime('Last Sunday')));
$this_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday'));
}
print "last_sunday={$last_sunday}
最佳答案
要获得最新的前一个星期天午夜,这应该这样做.将NOW()的两个实例替换为您的日期时间以检查另一个日期.
SELECT DATE_SUB(DATE(NOW()),INTERVAL DAYOFWEEK(NOW())-1 DAY) latest_sun
要提前一周获得星期日,请使用DAYOFWEEK(NOW())6天.
编辑:这是你的查询;
SELECT COUNT(author)
FROM `posts`
WHERE author='FooBar'
AND `date` >= DATE_SUB(DATE(NOW()),INTERVAL DAYOFWEEK(NOW())+6 DAY)
AND `date` < DATE_SUB(DATE(NOW()),INTERVAL DAYOFWEEK(NOW())-1 DAY)