我目前正在使用以下 SQL 从表中检索过去 7 天的条目:
purchased >= date_sub(now() ,interval 7 day)
但是,我需要对此进行更改,以便它检索过去整整几周的条目(周六午夜到周六午夜)。所以基本上,整个星期结果都不会改变,但是当有人在周日早上访问时,他们会精神焕发。
我只是想不通如何计算这些日子等等。此外,是否有内置的 MySQL 函数来执行此操作?
我希望我已经解释清楚了。 这是在 PHP 应用程序中。
最佳答案
查看MySQL函数YEARWEEK() .
所以你可以做类似的事情
SELECT * FROM table WHERE YEARWEEK(purchased) = YEARWEEK(NOW());
您可以使用第二个模式参数更改一周的起始日
然而,以某种方式计算“上周日 00:00”的日期可能会更好,这样数据库就不必为每一行运行一个函数,但我看不到明显的做法在 MySQL 中。但是,您可以轻松地在 php 中生成它并执行类似的操作
$sunday = date(('Y-m-d H:i:s'), strtotime('last sunday 00:00'));
$sql = "SELECT * FROM table WHERE purchased >= '$sunday'";
关于PHP/MySQL : Retrieving the last *full* weeks entries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/313962/