PHP / MySQL:检索最后*完整*周的条目

时间:2008-11-24 11:46:06

标签: php sql mysql date

我目前正在使用以下SQL从表中检索最近七天的条目:

purchased >= date_sub(now() ,interval 7 day)

但是,我需要对此进行更改,以便检索最后几周完整的条目(周六午夜至周六午夜)。所以基本上,整个星期结果都不会改变,但是当周日早上有人访问时,他们会更新。

我无法理解如何解决这些日子等问题。另外,有没有内置的MySQL函数可以做到这一点?

我希望我已经清楚地解释了这一点。 这是在PHP应用程序中。

2 个答案:

答案 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,并将其与您要过滤的记录周比较。