Codeigniter 数据库日期比较

Posted

技术标签:

【中文标题】Codeigniter 数据库日期比较【英文标题】:Codeigniter database date-compare 【发布时间】:2012-02-08 09:52:21 【问题描述】:

我在使用 activerecord 将数据库中的日期与一周后的日期进行比较时遇到问题。我正在尝试返回开始日期不到一周的事件列表。

event_start_date的格式为2011-06-30 09:00:00

$this->db->select('event_id,title,event_start_date,location');
$this->db->where('event_start_date <=',DATE_ADD(NOW(),INTERVAL 7 DAYS ));
$query = $this->db->get('sd_events');

无法为此制定正确的语法,任何帮助将不胜感激:-)

【问题讨论】:

【参考方案1】:

您可以只使用第一个参数来接受带有 ->where 的函数。

$this->db->select('event_id,title,event_start_date,location');
$this->db->where('event_start_date <= DATE_ADD(NOW(),INTERVAL 7 DAYS)', null);
$query = $this->db->get('sd_events');

这应该把它放在你的 WHERE 语句中。否则,它会将您的“DATE_ADD”用不计算的单引号括起来。

【讨论】:

【参考方案2】:

两件事。首先,您是否尝试过将 where 子句放在这样的引号中:

$this->db->where('event_start_date <=','DATE_ADD(NOW(),INTERVAL 7 DAYS )');

其次,如有必要,只需跳过使用 where 函数并将整个查询放入如下:

$this->db->query('SELECT event_id,title,event_start_date,location FROM sd_events WHERE event_start_date <= DATE_ADD(NOW(),INTERVAL 7 DAYS )');

【讨论】:

是的,我最终只写了一个大查询并这样做了,这是一种耻辱,因为将其分解为单独的行使其更易于阅读。 讨厌使用 where() 有什么用?是因为代码慢吗?

以上是关于Codeigniter 数据库日期比较的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 日期比较 - 大于或小于日期时间字段不起作用

php/Codeigniter——如何通过排除时间来仅比较日期

将发布日期与codeigniter中的时间戳进行比较

mysql utcdate 字符串比较codeigniter

使用 CodeIgniter 以日期格式在数据库上计算每月、每年的日期

Codeigniter:验证两个日期字段