Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何设置SQL以查找上周日到本周日(1周)的记录_Mysql_Sql_Date_Intervals - Fatal编程技术网

Mysql 如何设置SQL以查找上周日到本周日(1周)的记录

Mysql 如何设置SQL以查找上周日到本周日(1周)的记录,mysql,sql,date,intervals,Mysql,Sql,Date,Intervals,这与我现在的情况类似,即: 从'posts'中选择COUNT(author),其中'date`>=date\u SUB(CURDATE(),间隔1周)和author='FooBar' 这将给我一个数多少次,一个作者已张贴在过去一周 如果我要在周日下午5:30运行程序,从上周日上午12:00到本周日上午12:00查找帖子,那么我希望使用它。同样,如果我忘了在星期天运行,现在是星期一。我仍然希望它从上周日12:00运行到刚刚过12:00的周日 编辑: 我已经完成了使用PHP生成正确SQL语句所需的工

这与我现在的情况类似,即:

从'posts'中选择COUNT(author),其中'date`>=date\u SUB(CURDATE(),间隔1周)和author='FooBar'

这将给我一个数多少次,一个作者已张贴在过去一周

如果我要在周日下午5:30运行程序,从上周日上午12:00到本周日上午12:00查找帖子,那么我希望使用它。同样,如果我忘了在星期天运行,现在是星期一。我仍然希望它从上周日12:00运行到刚刚过12:00的周日

编辑:

我已经完成了使用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'";
?>

要获取星期日午夜之前的最新信息,应该这样做。用datetime替换
NOW()
的两个实例以检查另一个日期

选择日期子项(日期(现在())、间隔周日(现在())-1天)最近的太阳
若要提前一周获得星期日,请使用
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)
选择计数(作者)
来自“posts”
作者在哪里
和'date`>=date\u SUB(date(NOW()),INTERVAL DAYOFWEEK(NOW())+6天)
和'date`
如何将这些变量合并到我可以在SQL中使用的变量中,特别是mysql?它会在我运行的那天起作用吗sunday@BHare添加了完整的查询,是的,它将查找最晚的午夜到周日,例如,如果它在2013年7月21日上午12点到7月27日23:59:59之间运行,它将查找7月14日上午12点到7月20日结束之间的数据。@JoachimIsaksson谢谢你的回答解决了我的问题,但我无法理解这一部分:
DATE\u SUB(DATE(NOW())、INTERVAL DAYOFWEEK(NOW())-1天)
上周日这一部分有多完美?@SagarGuhe
DAYOFWEEK
周日返回1,周一返回2,依此类推。查询从该值中减去1,该值表示周日为0,周一为1,依此类推。然后从今天的日期中减去那么多天,就可以找到上个星期天(如果已经是星期天,那么就减去0天,如果是星期一,就减去1天等等),这有意义吗?@JoachimIsaksson现在完全明白了,谢谢你的解释,惊讶并感谢你闪电般的回答:)