Как отформатировать дату с CodeIgniter - PullRequest
3 голосов
/ 14 ноября 2011

Я пытаюсь понять, что я делаю здесь не так. Я хочу отформатировать поле date_published в моем запросе, и я получаю t_string syntax error в моей IDE.

$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, чтобы узнать правильный синтаксис для использования рядом с 'ОТ (site_news_articles) ГДЕ site_news_articles. news_category_id = 2 А' в строке 2

SELECT site_news_articles. article_title, site_news_articles. is_sticky, DATE_FORMAT (site_news_articles.date_published, '%M% e, %Y') как formatted_date FROM (site_news_articles) WHERE site_news_articles. news_category_id * = 2 И site_news_articles. is_approved = 'Да' И site_news_articles. status_id = 1 ЗАКАЗАТЬ ПО site_news_articles. date_published desc LIMIT 10

Имя файла: /home/xtremer/public_html/models/sitemodel.php

Номер строки: 140

Ответы [ 5 ]

6 голосов
/ 14 ноября 2011

Вы пытаетесь выполнить PHP в запросе MySQL. Вы должны использовать функцию 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-запрос, который будет выполнен в вашей базе данных.

Вы можете либо вернуть необработанную дату с помощью вашего запроса, а затем отформатировать дату с помощью CI, либо вам нужно использовать функцию MySQL DATE_FORMAT для возврата отформатированной даты с помощью mysql.

6 голосов
/ 14 ноября 2011

Похоже, у вас есть синтаксическая ошибка.

$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, вы должны использовать двойные кавычки, чтобы окружить его, так что вы можете использовать одинарные кавычки в вашем запросе безбежать от них.

4 голосов
/ 04 октября 2012

попробуйте использовать mdate:

echo mdate('%M %d, %Y at exactly %h:&i %a',strtotime(date));
1 голос
/ 14 ноября 2011

Похоже, вы забыли одну цитату

$this->db->select("site_news_articles.article_title, site_news_articles.is_sticky, date_format(site_news_articles.date_published, 'f jS, Y')");
0 голосов
/ 14 ноября 2011

В качестве альтернативы можно использовать формат даты php

date(string format [, int timestamp])

Итак ...

date('Y-m-d h:i:s', 'site_news_articles.date_published')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...