这类似于我现在所拥有的,即:
SELECT COUNT(author) FROMpostsWHEREdate>= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) AND author='FooBar'
SELECT COUNT(author) FROM
WHERE
>= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) AND author='FooBar'
这将为我提供一个作者在过去1周内发布过多少次的统计信息。
我想拥有它,所以如果我要在星期日的下午5:30运行该程序,以查找从上一个星期日12:00 AM到这个星期日12:00 AM的帖子。同样,如果我忘记了在星期天和现在的星期一运行它。我仍然希望它从上一个星期日12:00 AM运行到刚过12:00 AM的星期日。
编辑:
我已经完成了使用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}<br>"; print "this_sunday={$this_sunday}<br>"; print "SELECT COUNT(author) FROM `posts` WHERE `date` <= '$this_sunday' AND `date` >= '$last_sunday' AND author='FooBar'"; ?>
要获取最近的先前星期日午夜,应执行此操作。NOW()用您的日期时间替换两个实例,以检查另一个日期。
NOW()
SELECT DATE_SUB(DATE(NOW()), INTERVAL DAYOFWEEK(NOW())-1 DAY) latest_sun
要提前一周获得周日,请改用DAYOFWEEK(NOW())+6 DAY。
DAYOFWEEK(NOW())+6 DAY
编辑:那将使您的查询;
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)