我目前正在使用以下SQL从表中检索最近七天的条目:
purchased >= date_sub(now() ,interval 7 day)
但是,我需要对此进行更改,以便检索最后几周完整的条目(周六午夜至周六午夜)。所以基本上,整个星期结果都不会改变,但是当周日早上有人访问时,他们会更新。
我无法理解如何解决这些日子等问题。另外,有没有内置的MySQL函数可以做到这一点?
我希望我已经清楚地解释了这一点。 这是在PHP应用程序中。
答案 0 :(得分:2)
查看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'";
答案 1 :(得分:0)
MySQL具有WEEK()功能,允许您从日期获取一年中的数字周。您可以获得(今天的一周)-1,并将其与您要过滤的记录周比较。