MySQL 列 > sdate、edate(其第 2 列)。
sdate 是项目开始的开始日期,edate 是项目结束的结束日期。
所以我需要在它们之间进行搜索..
<strong>Search</strong><br />
<form method="post" action="search.php">
Start Report Date : <input type="text" name="sdate" />
End Report Date : <input type="text" name="edate" />
<input type="submit" name="Submit" value="Search" />
</form>
This is example data in mysql
sdate Project Name edate
22 December 2008 project 1 23 December 2008
25 December 2008 project 2 26 December 2008
24 December 2008 project 3 27 December 2008
1 January 2008 project 4 20 January 2008
10 December 2008 project 5 12 December 2008
假设用户输入了 sdate(例如,2008 年 12 月 22 日)和 edate(例如,2008 年 12 月 30 日)。
应该显示
22 December 2008 project 1 23 December 2008
25 December 2008 project 2 26 December 2008
24 December 2008 project 3 27 December 2008
所以我需要一个 php 代码 sql 查询,它应该显示这两个日期之间的条目..
请帮助我..
非常感谢..
最佳答案
假设您的 sdate
和 edate
属于 MySQL 列类型 DATE
,您可以执行以下操作:
SELECT
Project_Name
, sdate
, edate
FROM your_table
WHERE
sdate <= '2008-12-26'
AND
edate >= '2008-12-26'
或者您可以使用 DATEDIFF
SELECT
Project_Name
, sdate
, edate
FROM your_table
WHERE
DATEDIFF(sdate, '2008-12-26') <= 0
AND
DATEDIFF(edate, '2008-12-26') >= 0
第一个更有效,因为 MySQL 可以将表中的所有行与静态值进行比较。对于第二个解决方案,它需要计算表中每一行的差异。
如果您的 sdate
和 edate
列不是 DATE 列,那么您就不走运了,需要先更改它们。
关于php - PHP 中的 2 列 Mysql 日期范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393639/