3

编码器。我在这里遇到了一个小问题,找不到解决方案。我正在使用 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,。, . , . , . , . , . , DATE_FORMAT(s.created_at, ) AS created_at FROM ( s, ) JOIN > u ON 。= 。加入p 。= 。WHERE IN ('5726, 2, 10293') AND = 0 ORDER BY 。描述限制 2uemailpdisplay_namepfirst_nameplast_namesstatus_idsmessagePublicado el > %d/%m/%Y a las %h:%i %pdefault_statusdefault_statusdefault_usersuiddefault_suser_iddefault_profilespuser_iduiduser_iddeletedscreated_at

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

4

4 回答 4

8

添加 FALSE 作为 SELECT 语句中的第二个参数。您可能还必须在 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

于 2012-08-31T14:32:03.923 回答
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');
于 2012-09-04T02:46:49.117 回答
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");

- 迟到总比不到好

于 2013-08-09T21:58:12.660 回答
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

于 2012-08-31T17:14:59.957 回答