2013-04-15 100 views
1

我用笨的Active Record類試圖讓列的年份和月份組成部分,其中的數據類型是DATE如何正確使用mysql MONTH()和YEAR()的笨活動記錄

$this->db->where('mo', 'MONTH(so_date)'); 
$this->db->where('yr', 'YEAR(so_date)'); 

上面的代碼給了我這個。 MONTH()和YEAR()包含在單引號內。

SELECT * 
FROM mytbl 
WHERE `mo` = 'MONTH(so_date)' 
AND `yr` = 'YEAR(so_date)' 

//so_date looks like this : 2013-04-15 

我在做什麼錯在這裏,或者我爲什麼不改變引號?當我刪除引號並嘗試在PHPMYADMIN中運行它時,查詢完全給出了我想要的內容。

+0

是'so_date'被傳遞給查詢您的日期字段或變量的名稱?如果後者肯定應該看起來像'$ this-> db-> where('mo','MONTH('。$ so_date。')');' – Ade

回答

1

doc

$this->db->where()接受一個可選的第三個參數。

如果你將它設置爲FALSE,笨就會不要試圖用反引號,以保護你的領域或表名。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE); 

這樣做:

$this->db->where('mo', 'MONTH(so_date)' , FALSE); 
+0

好極了!謝謝。我一直在閱讀那部分內容,但實際上並沒有得到什麼反效果。 – esandrkwn

1
$this->db->where('mo = MONTH(so_date)'); 
+0

這也適用。謝謝。 – esandrkwn