2012-01-12 49 views
4

我有一個問題,比較數據庫中的日期與現在使用activerecord一個星期。我正在嘗試返回一個事件列表,其中的開始日期不到一週後。Codeigniter數據庫日期比較

的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

理解兩件事情。首先,你嘗試把你的where子句中的報價是這樣的:

$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

是的,我最終只是在一個大的查詢中寫作,並做到了這一點,因爲把它分解成單獨的行使它更容易閱讀,所以這是一種恥辱。 – 2012-01-12 04:51:40

+0

使用where()的仇恨是什麼?是否由於代碼太慢? – Exegesis 2012-07-10 21:09:34

2

你可以用 - > 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語句只是asis。否則,它會將您的「DATE_ADD」包裹在單引號中,但不會進行評估。