表结构就像那样
start_time TimeStamp null
end_time TimeStamp null
问题是,我想在开始时间和结束时间内获得所有记录,和所有具有null开始时间和值的值。结束时间值(表示记录不受时间限制)
$this->db->where('start_date <=', now());
$this->db->where('end_date >', now());
尝试了一些sql的第一个要求,但没有运气,谢谢你的帮助
答案 0 :(得分:3)
听起来你需要的查询逻辑会是这样的:
...
WHERE NOW() BETWEEN start_date AND end_date
OR (start_date IS NULL AND end_date IS NULL)
要使用Codeigniter's Active Record执行此操作,请尝试:
$this->db->where('NOW() BETWEEN start_date AND end_date');
$this->db->or_where('start_date IS NULL AND end_date IS NULL');
或者,您可以将整个事情放在一个陈述中:
$where = 'NOW() BETWEEN start_date AND end_date OR (start_date IS NULL AND end_date IS NULL)';
$this->db->where($where);
答案 1 :(得分:2)
您可能需要进行复合查询。
$within_range = array('start_date <=' => now(), 'end_date =>' => now());
$not_restricted = array('start_date IS NULL' => null, 'end_date IS NOT NULL' => null)
$this->db->where($within_range)->or_where($not_restricted);
详细了解https://ellislab.com/codeigniter/user-guide/database/active_record.html#select
处的关联数组和or_where语法当然你可以使用raw sql查询:
$this->db->select('select ...');