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天)
上周日这一部分有多完美?@SagarGuheDAYOFWEEK
周日返回1,周一返回2,依此类推。查询从该值中减去1,该值表示周日为0,周一为1,依此类推。然后从今天的日期中减去那么多天,就可以找到上个星期天(如果已经是星期天,那么就减去0天,如果是星期一,就减去1天等等),这有意义吗?@JoachimIsaksson现在完全明白了,谢谢你的解释,惊讶并感谢你闪电般的回答:)