Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL中基于日期选择的最佳方式_Php_Mysql_Date - Fatal编程技术网

PHP/MYSQL中基于日期选择的最佳方式

PHP/MYSQL中基于日期选择的最佳方式,php,mysql,date,Php,Mysql,Date,我有一个数据库表,列DATETIME称为“entry_date”,例如 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中根据日期回显结果的最佳方法是什么,所以我只得到本周的结果,所以2012-10-15>2012-10-21,但显然我不能只编码出来,因为每天都在变化:)那么在PHP中你会怎么做呢?所以明天本周的条

我有一个数据库表,列DATETIME称为“entry_date”,例如

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中根据日期回显结果的最佳方法是什么,所以我只得到本周的结果,所以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开始的整数。因此,您的周数将被视为星期六作为开始日期。如果您想在星期一使用间隔添加
+间隔2天

它也可以简化为以下内容。但它不支持任何一天作为一周的第一天。因此,它并非适用于所有文化

where yearweek(`entry_date`) = yearweek(curdate())

你的问题是什么?标题和最后一段似乎提出了不同的问题。你试过什么?我已经编辑了这个问题,想更好地解释我自己,我什么都没试过,因为我不知道。今年你能添加吗?@CarlRydings检查“本月”是如何计算的。可能还想提到函数
WEEK
,它按预期工作。@VincentSavard我忘了。但是
WEEK
函数不允许您为每种文化定制一周的第一天。它只支持星期天和星期一。我一周的第一天是星期六除了这周的所有工作,我用。。。从条目中选择*,其中
entry\u date
介于(CURDATE()-Interval DAYOFWEEK(CURDATE())day)和(CURDATE()-Interval DAYOFWEEK(CURDATE())+Interval+2周)…是这样吗,我需要它从周一开始,因为我在英国需要从周一15号到周日21号