小编典典

如何设置SQL以查找从上一个星期日到这个星期日(1周)的记录

sql

这类似于我现在所拥有的,即:

SELECT COUNT(author) FROMpostsWHEREdate>= 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'";
?>

阅读 263

收藏
2021-03-23

共1个答案

小编典典

要获取最近的先前星期日午夜,应执行此操作。NOW()用您的日期时间替换两个实例,以检查另一个日期。

SELECT DATE_SUB(DATE(NOW()), INTERVAL DAYOFWEEK(NOW())-1 DAY) latest_sun

要提前一周获得周日,请改用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)
2021-03-23