2015-02-07 3 views
1

Привет это мой код модели для заказа и получения данных:Codeigniter: Сортировать по возрастанию Дата

$this->db->order_by($oBy, "asc"); 
$query = $this->db->get('books'); 

Все работает отлично, однако в моей базе данных я храню дату в виде строки, например 01-Jan-2014.

Поэтому, когда я заказываю дату, он будет заказывать его днем, а не годом, могу ли я знать, как я могу его решить, сортируя по году, однако данные будут отображаться как 01 января 2014 года, а также он будет отображаться в порядке возрастания? Спасибо!

Ошибка: enter image description here

+0

Вы не должны хранить дату в виде строки. Используйте один из форматов дат, поддерживаемых вашей базой данных. Затем вы можете использовать функции даты, доступные в вашей базе данных, для форматирования поля, как вам нравится, и иметь возможность заказывать его независимо от того, что вы хотите. – Tom

+0

Почему бы просто не написать полный запрос БД, а затем в конце добавить ORDER BY 'day' ASC? –

ответ

2
$this->db->select('str_to_date('.$oBy.', "%d-%b-%Y") day',false);//select your colum as new column name wich is converted as str ot date 
//yo can do select more. 
$this->db->order_by('day','ASC'); 
$query = $this->db->get('books'); 

Это решит вашу проблему.

+0

Хм, но я получаю вышеуказанную ошибку. – Outliers

+0

Сообщение об ошибке означает, что вы не сделали выбор других столбцов. Вы не читали то, что я сказал со вторым комментарием решения .add эту строку '$ this-> db-> select ('books. *')'. перед 'this-> db-> order_by ('day', 'ASC');' this line –

+0

Да, это сработало спасибо! :) Извините, но я очень плохо разбираюсь в SQL-запросе. – Outliers

0

Я полагаю, что $ Oby Ваше имя столбца

$this->db->order_by("str_to_date(" . $oBy . ", '%d-%b-%Y')", "asc"); 

% d = день месяца, число (00..31)

% б = Сокращенный название месяца (Jan..Dec)

% Y = год, числовые, четыре цифры

+1

Идея решения в порядке. Но это приведет к ошибке. –

+0

@ShaifulIslam Не удалось проверить его сам, но да, я понимаю, теперь я видел ваш ответ? Спасибо. – AdrienXL

Смежные вопросы