我正在试图找出我在这里做错了什么。我想在我的查询中格式化date_published
字段,并且在我的IDE中获得t_string syntax error
。
$this->db->select('site_news_articles.article_title, site_news_articles.is_sticky,' date_format('site_news_articles.date_published, 'f jS, Y')');
更新:
function getNewsTitles($category_id) {
$this->db->select('site_news_articles.article_title, site_news_articles.is_sticky');
$this->db->select("DATE_FORMAT(site_news_articles.date_published, '%M %e, %Y') as formatted_date", TRUE);
$this->db->from('site_news_articles');
$this->db->where('site_news_articles.news_category_id', $category_id);
$this->db->where('site_news_articles.is_approved', 'Yes');
$this->db->where('site_news_articles.status_id', 1);
$this->db->order_by('site_news_articles.date_published', 'desc');
$this->db->limit(10);
$query = $this->db->get();
return $query->result_array();
}
错误号码:1064
您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在'FROM(site_news_articles
)WHERE site_news_articles
附近使用正确的语法。news_category_id
= 2 A'在第2行
SELECT site_news_articles
。article_title
,site_news_articles
。is_sticky
,DATE_FORMAT(site_news_articles.date_published,'%M
%e,%Y')
as formatted_date FROM (site_news_articles
)WHERE site_news_articles
。news_category_id
= 2 AND site_news_articles
。is_approved
='是'和site_news_articles
。status_id
= 1 ORDER BY site_news_articles
。date_published
desc LIMIT 10
文件名:/home/xtremer/public_html/models/sitemodel.php
行号:140
答案 0 :(得分:6)
您正尝试在的mysql查询中执行PHP 。您需要使用MySQL DATE_FORMAT
函数。看看这里:
http://davidwalsh.name/format-date-mysql-date_format
$this->db->select('site_news_articles.article_title, site_news_articles.is_sticky');
$this->db->select("DATE_FORMAT(site_news_articles.date_published, '%M %e, %Y') as formatted_date", FALSE);
$this->db->select()
方法用于“生成”sql查询 - 因此尝试在那里使用CI date_format
函数,将无法生成将在您的数据库上执行的正确sql查询。 / p>
您可以使用查询返回原始日期,然后使用CI格式化日期,或者您需要使用MySQL DATE_FORMAT
函数返回带有mysql的格式化日期。
答案 1 :(得分:6)
看起来你有语法错误。
$this->db->select("site_news_articles.article_title, site_news_articles.is_sticky, DATE_FORMAT(site_news_articles.date_published, '%M %D, %Y')", FALSE);
每当您在CI中构建查询时,都应该使用双引号将其括起来,这样您就可以在查询中使用单引号而无需转义它们。
答案 2 :(得分:4)
尝试使用mdate:
echo mdate('%M %d, %Y at exactly %h:&i %a',strtotime(date));
答案 3 :(得分:1)
看起来你忘了单引号
$this->db->select("site_news_articles.article_title, site_news_articles.is_sticky, date_format(site_news_articles.date_published, 'f jS, Y')");
答案 4 :(得分:0)
另一种方法是使用php的日期格式
date(string format [, int timestamp])
因此...
date('Y-m-d h:i:s', 'site_news_articles.date_published')