从日期小于提供日期的数据库中选择
Posted
技术标签:
【中文标题】从日期小于提供日期的数据库中选择【英文标题】:Select from database where date is less than a supplied date 【发布时间】:2016-07-19 17:58:15 【问题描述】:我正在尝试从日期在当前日期两周内的数据库中提取行,我正在使用 CodeIgniter,这是我的模型:
function GetToDoItems($userID)
$range = date('Y-m-d', strtotime("+2 weeks"));
$query = $this->db->query("SELECT * FROM FYP_Milestones
INNER JOIN FYP_Modules ON FYP_Milestones.ModuleID = FYP_Modules.ID
WHERE FYP_Milestones.MilestoneDue < $range
ORDER BY FYP_Milestones.MilestoneDue ASC
");
return $query->result();
它运行这个查询:
SELECT * FROM FYP_Milestones INNER JOIN FYP_Modules ON FYP_Milestones.ModuleID = FYP_Modules.ID WHERE FYP_Milestones.MilestoneDue < 2016-04-14 ORDER BY FYP_Milestones.MilestoneDue ASC
我在数据库中有这样的一行:
考虑到 2016-04-07 比 2016-04-14 少 7 天,我希望仅拉出该行,但 SQL 返回一个空结果,为什么这是案例?
【问题讨论】:
【参考方案1】:为日期值添加单引号,例如:
$query = $this->db->query("SELECT * FROM FYP_Milestones
INNER JOIN FYP_Modules ON FYP_Milestones.ModuleID = FYP_Modules.ID
WHERE FYP_Milestones.MilestoneDue < '".$range."'
ORDER BY FYP_Milestones.MilestoneDue ASC
");
【讨论】:
【参考方案2】:你实际上不需要 php 的范围,使用 SQL:
WHERE FYP_Milestones.MilestoneDue < (CURDATE() + INTERVAL 2 WEEK)
【讨论】:
这样比在 PHP 中更快更有意义以上是关于从日期小于提供日期的数据库中选择的主要内容,如果未能解决你的问题,请参考以下文章