如何使用CodeIgniter格式化日期

时间:2011-11-14 17:08:14

标签: php codeigniter

我正在试图找出我在这里做错了什么。我想在我的查询中格式化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_articlesarticle_titlesite_news_articlesis_sticky,DATE_FORMAT(site_news_articles.date_published,'%M%e,%Y') as formatted_date FROM (site_news_articles)WHERE site_news_articlesnews_category_id = 2 AND site_news_articlesis_approved ='是'和site_news_articlesstatus_id = 1 ORDER BY site_news_articlesdate_published desc LIMIT 10

文件名:/home/xtremer/public_html/models/sitemodel.php

行号:140

5 个答案:

答案 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')