PHP/MySQL : Retrieving the last *full* weeks entries

标签 php sql mysql date

我目前正在使用以下 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/

相关文章:

mysql - 如何利用join做一个简单的报表

mysql - 更多奇怪的 MySQL 行为 - 查询优化帮助

mysql - 授予 MySQL 中各个字段的权限

php - 有什么方法可以将字符串中的图像(带有图像的内容)放入 html 中?

php - WordPress 基尔基 : Typo found in field post_title

mysql - 创建 sql 转储并将其保存到远程

sql - 每月记录数

php - 循环插入查询有效一次,但之后无效

PHP 7.1 用动态变量替换多个值

php - "Back to search results"问题