【问题标题】:DATE_FORMAT within a query in CodeIgniter using Active Record don't work使用 Active Record 在 CodeIgniter 中的查询中的 DATE_FORMAT 不起作用
【发布时间】:2012-08-26 09:23:05
【问题描述】:

编码员。我在这里遇到了一个小问题,找不到解决方案。我正在使用 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”

选择u.id作为用户ID,u.emailp.display_namep.first_namep.last_name, s.status_id, s.message, DATE_FORMAT(s.created_at, Publicado el > %d/%m/%Y a las %h:%i %p) AS created_at FROM (default_status s, @987 @65433) 987654339@ u ON u.id = default_s.user_id JOIN default_profiles p ON p.user_id = u.id 其中user_id IN ('5726, 2, 10293') AND deleted = 0 订单 BY s.created_at desc LIMIT 2

有谁知道我可以在这个查询中的哪里使用 DATE_FORMAT 吗?有趣的是与纯 SQL 作品相同的查询编写 提前干杯和感谢

【问题讨论】:

    标签: mysql codeigniter activerecord codeigniter-2


    【解决方案1】:

    在 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

    【讨论】:

    • 我按照您的建议更改了我的查询我现在编辑帖子请看一下,因为相同的查询在纯 SQL 中工作正常所以不知道为什么这里失败
    【解决方案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');
    

    【讨论】:

      【解决方案3】:

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

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

      --迟到总比不到好

      【讨论】:

        【解决方案4】:

        看返回的信息,格式'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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-15
          • 1970-01-01
          • 2014-06-26
          • 2011-10-22
          • 2017-11-21
          • 1970-01-01
          • 2017-03-30
          相关资源
          最近更新 更多