我有一个名为“entry_date”的 DATETIME 列的数据库表,例如......
ID entry_date
1 2012-10-13
2 2012-10-14
3 2012-10-15
4 2012-10-20
5 2012-10-20
6 2012-10-21
在 PHP/MYSQL 中基于 DATE 回显结果的最佳方式是什么,所以我只得到本周的结果,所以 2012-10-15 > 2012-10-21,但显然我不能只把它编码出来,因为每天都在变化 :) 那么你如何在 php 中做到这一点,所以明天本周的条件将是 2012-10-16 > 2012-10-22
最佳答案
今天,使用
where date(`entry_date`) = curdate()
这个月,
where month(`entry_date`) = month(curdate())
and year(`entry_date`) = year(curdate())
本周
WHERE `entry_date`
BETWEEN (CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
AND (CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
以上查询有助于理解。但不利于性能的观点。请参阅下面的修改版本。它要好得多。
SET @s:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
SET @e:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
SELECT .... WHERE `entry_date` BETWEEN @s AND @e
这里 DAYOFWEEK 函数返回一个从 1=Sunday 开始的整数。所以你的星期将被算作星期六作为开始日期。如果你想在星期一添加 + Interval 2 day
with Interval.
也可以简化为如下。但它不支持任何一天作为一周的第一天。因此它不适用于所有文化。
where yearweek(`entry_date`) = yearweek(curdate())
关于php - 在 PHP/MYSQL 中基于 DATE 的 SELECT 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993434/