当前位置: 首页 > 面试题库 >

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

陶寒
2023-03-14
问题内容

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

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'";
?>

问题答案:

要获取最近的先前星期日午夜,应执行此操作。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)


 类似资料:
  • 问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做:

  • 问题内容: 给定一个特定的日期(例如2011-07-02),我如何找到该日期之后的下一个星期一(或该日的任何工作日)的日期? 问题答案:

  • 问题内容: 我有开始日期和结束日期。 我需要找出星期天或星期一等取决于用户单击复选框的日期。 如何在PHP中查找/计算? 问题答案: 您可以创建一个函数,该函数递归使用strtotime()来计算天数。由于工作正常。 希望这是您正在寻找的东西:)

  • 问题内容: 如果我有特定的星期数(例如51)和给定的年份(例如2008),我如何找到同一周的第一个星期一的日期? 非常感谢 问题答案: 假设一周的第一天是星期一,请使用,而不是一周的第一天是星期日。有关详细信息,请参见strptime文档。 更新: 固定星期数。该指令基于0,因此第51周应输入为50,而不是51。

  • 问题内容: 可能是这样的: 但是可能存在更简单的方法吗?谢谢。 问题答案: 您走在正确的轨道上。 让我仅在星期一进行这项工作。

  • 问题内容: 如果我有一个, 并且想要获得一周中的特定时间(由0(星期日)至6(星期六)指定)。 例如,如果我有as 和as ,我想得到,如果我有as , 编辑: 你们大多数人都误解了它。我有一些日期,并且想要获得由同一周的0-6指定的日期。 所以不,我不要… 的日子 问题答案: 我想这就是你想要的。