使用Active Record的CodeIgniter中的查询中的DATE_FORMAT不起作用

时间:2012-08-31 14:24:49

标签: mysql codeigniter activerecord codeigniter-2

编码器。我在这里遇到一个小问题,无法找到解决方案。我正在使用CI中的Active Record构建查询。这是查询的代码:

 $this->db->select("u.id AS user_id, u.email, p.display_name, p.first_name, p.last_name, s.status_id, s.message");
    $this->db->select("DATE_FORMAT(s.created_at, `Publicado el %d/%m/%Y a las %h:%i %p`) AS created_at", FALSE);

 $this->db->join($this->_table_users . ' u', 'u.id = s.user_id');
 $this->db->join($this->_table_profiles . ' p', 'p.user_id = u.id');

 $this->db->where_in('user_id', $str);
 $this->db->where('deleted', 0);

 $this->db->from($this->_table . ' s');

 $this->db->order_by('s.created_at', 'desc');

但是我收到了这个错误:

  

错误号码:1054

     

“字段列表”中的未知列'Publicado el%d /%m /%Y a las%h:%i%p'

     

SELECT uid AS user_id,uemailpdisplay_namep。{{ 1}},   first_nameplast_namesstatus_ids,DATE_FORMAT(s.created_at,message)AS created_at FROM(Publicado el > %d/%m/%Y a las %h:%i %p s,default_status)加入> default_status你ON default_usersu = iddefault_s加入user_id p ON   default_profilesp = user_idu WHERE id IN('5726,2,10293')和user_id = 0订单   BY deleteds desc LIMIT 2

有没有人知道我在这个查询中可以使用DATE_FORMAT的位置?有趣的是与纯SQL工作相同的查询 欢呼并提前致谢

4 个答案:

答案 0 :(得分:8)

在SELECT语句中添加FALSE作为第二个参数。您可能还必须在WHERE子句中执行类似的操作。

要查看的一些链接:

http://ellislab.com/forums/viewthread/74206/#368778

http://ellislab.com/forums/viewthread/206962/#963061

http://ellislab.com/codeigniter/user-guide/helpers/date_helper.html

答案 1 :(得分:2)

整理你的选择

$this->db->select("u.id AS user_id, u.email, p.display_name, p.first_name, p.last_name, s.status_id, s.message");
$this->db->select("DATE_FORMAT(s.created_at, `%d/%m/%Y`) AS created_at", FALSE);

$this->db->join($this->_table_users . ' u', 'u.id = s.user_id');
$this->db->join($this->_table_profiles . ' p', 'p.user_id = u.id');

$this->db->where_in('user_id', $str);
$this->db->where('deleted', 0);

$this->db->from($this->_table . ' s');

$this->db->order_by('s.created_at', 'desc');

答案 2 :(得分:1)

对我有用的技巧是将日期格式字符串放在括号内。例如替换

DATE_FORMAT(`pf_Partido`.`fecha`,'%d-%m-%Y')

通过

DATE_FORMAT(`pf_Partido`.`fecha`,('%d-%m-%Y'))

在您的情况下,代码将是

$this->db->select("DATE_FORMAT(s.created_at, ('Publicado el %d/%m/%Y a las %h:%i %p')) AS created_at");

- 迟到总比没有

答案 3 :(得分:0)

查看返回的消息,格式为'Publicado el> %d /%m /%Y a las%h:%i%p'不能与`一起传递,codeigniter将其删除,您需要使用'(单引号)来分隔它们。 有关更多信息,请参阅 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format