从日期小于提供日期的数据库中选择

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 中更快更有意义

以上是关于从日期小于提供日期的数据库中选择的主要内容,如果未能解决你的问题,请参考以下文章

怎样在C#中判断从界面选择的日期是在当前日期之前

在记录列表中选择最近的日期,但小于今天的日期

如何选择小于时间戳的日期和时间?

日期选择器不应该接受小于当前日期的过去日期

在 SQL 和 VB.NET 中检查日期是不是小于另一个

如何使用jquery检查日期不能小于当前日期?