2012-01-12 3 views
4

У меня возникла проблема сравнения дат в базе данных с текущей недели с помощью activerecord. Я пытаюсь вернуть список событий с датой начала менее чем через неделю.База данных Codeigniter date-compare

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'); 

Имея проблемы при работе, правильный синтаксис для этого, любая помощь будет оценена :-)

ответ

3

Две вещи. Во-первых, вы пробовали наложив свое, где положение в кавычках, как это:

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

Во-вторых, в случае необходимости просто пропустить, используя функцию где и поместить весь запрос в так:

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

Да, я закончил тем, что писал только в одном большом вопросе и сделал это так, его позор, как разбить его на отдельные линии, делает его гораздо проще читать. –

+0

Что с ненавистью, используя where()? Это из-за медленного кода? – Exegesis

2

Вы можете просто используйте первый аргумент для принятия функций с помощью -> где.

$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 только asis. В противном случае он упакует ваш «DATE_ADD» в одинарные кавычки, которые не будут оцениваться.

Смежные вопросы