Mysql 仅在PHP中显示本周的行

Mysql 仅在PHP中显示本周的行,mysql,sql,date,Mysql,Sql,Date,我的数据库中存储了两个日期,分别为dtp\u s列和dtp\u e(开始、结束)。这些源于填充的表单,用户需要选择开始和结束日期 我想显示本周周一到周日的记录,但我当前的解决方案是显示7天前的日期-今天 SELECT id FROM _records WHERE dtp_s > unix_timestamp(now() - interval 1 week) AND userid = ? ORDER BY dtp_s DESC LIMIT 5 我曾尝试将now()更改为s

我的数据库中存储了两个日期,分别为
dtp\u s
列和
dtp\u e
(开始、结束)。这些源于填充的表单,用户需要选择开始和结束日期

我想显示本周周一到周日的记录,但我当前的解决方案是显示7天前的日期-今天

SELECT id
FROM _records
WHERE
    dtp_s > unix_timestamp(now() - interval 1 week)
    AND userid = ?
ORDER BY dtp_s DESC 
LIMIT 5
我曾尝试将
now()
更改为
strotime('sunday')
的值,但如果确实存在记录,则不会显示任何记录


关于如何仅显示基于同一周(周一-周日)开始的数据的任何想法?

在查看了SO的其他问题后,这可以通过SQL实现,而不是混合PHP
strotime
值,如果配置不正确,这些值可能位于不同的时区

SELECT id FROM _records
WHERE dtp_s > unix_timestamp(date(now() + interval 6 - weekday(now()) DAY) - interval 1 week)
AND userid = ?
ORDER BY dtp_s DESC
LIMIT 5

我只显示了本周的记录。

要获取本周的星期一,您可以使用:-

select date(curdate() - interval weekday(curdate()) day)
要将其添加到代码中,请执行以下操作:-

SELECT id FROM _records 
WHERE dtp_s > date(curdate() - interval weekday(curdate()) day) AND userid = ? 
ORDER BY dtp_s DESC 
LIMIT 5