|
|
|
| Есть таблица с новостями, где дата - поле varchar.
При выводе новостей из БД, они странно сортируются.
Привожу 2 вывода:
По убыванию:
25/10/2005
20/10/2005
19/10/2005
18/10/2005
16/10/2005
10/08/2005
07/06/2006
|
По возрастанию:
07/06/2006
10/08/2005
16/10/2005
18/10/2005
19/10/2005
20/10/2005
25/10/2005
|
Видно что сортировка происходит только по первой цифре, а остальные игнорируются.
В чём может быть причина такой неверной сортировки? | |
|
|
|
|
|
|
|
для: codexomega
(08.06.2006 в 21:41)
| | Посмотрел в сети, вроде тип поля выбрал не подходящий для даты.
Говорят надо использовать datetime.
Но вот как это всё заносить в БД, и вытаскивать оттуда в нужном, читабильном формате:
dd/mm/yyyy ? | |
|
|
|
|
|
|
|
для: codexomega
(08.06.2006 в 22:02)
| | Короче, для занесения даты в базу, можно вроде использовать функцию SQL To_Date()
INSERT ... To_Date('string',['format']) ...
|
Эксперимент начался, посмотрим... | |
|
|
|
|
|
|
|
для: codexomega
(08.06.2006 в 22:42)
| |
FUNCTION TO_DATE does not exist
|
:)
---------------------------------------------------
Вот так работает:
$sql = "INSERT INTO religion_news ".
"(id, news_date, description) ".
"VALUES(NULL, STR_TO_DATE('$news_date','%d/%m/%Y'),'$description')";
|
Когда я сменил тип поля на date
Только вот дата добавляется почему-то в формате Y-m-d вместо d/m/Y
Можно сделать так чтобы она была d/m/Y?
Видел функцию DATE_FORMAT()
Пробовал выводить данные таким образом:
SELECT DATE_FORMAT(news_date,'%d/%m/%Y') ...
|
Но не работает.
Не подскажете как правильно со всем этим работать? | |
|
|
|
|
|
|
|
для: codexomega
(09.06.2006 в 00:19)
| | Хм... а почему дата хранится с поле VARCHAR? Было бы удобнее воспользоваться временным типом, например, DATETIME, а при выводе форматировать дату при помощи DATE_FORMAT(), которая, кстати, будет работать только с временным типом, т.е. передать ей произвольную строку не получится... | |
|
|
|
|
|
|
|
для: cheops
(09.06.2006 в 11:49)
| | Но я же написал что тип поля уже сменил.
Теперь он у меня DATE(часы и минуты мне не нужны).
Для добавления даты, используется формуляр, где пользователь сам заносит дату в формате dd/mm/YYYY
Вкратце, мне надо сделать так, чтобы эта самая дата правильно заносилась в базу данных, в поле типа DATE.
А потом, выводилась в таком же формате как в формуляре: dd/mm/YYYY
Вот я здесь и пробовал такое сделать, только застрял. | |
|
|
|
|
|
|
|
для: codexomega
(09.06.2006 в 13:23)
| | Так Вы ж вроде всё нашли?
Передавать в базу через INSERT/UPDATE .... STR_TO_DATE('$value', '%d/%m/%Y');
Извлекать из базы через SELECT DATE_FORMAT(news_date,'%d/%m/%Y') FROM .... | |
|
|
|
|
|
|
|
для: Trianon
(09.06.2006 в 13:39)
| |
$sql_select = "SELECT DATE_FORMAT(news_date,'%d/%m/%Y'), description ".
"FROM religion_news ".
"WHERE id = $update_element";
$sql_records = mysql_query($sql_select) or die('SQL Error !'.$sql_select.'<br/>'.mysql_error());
|
<?php while ( $list = mysql_fetch_array( $sql_records ) ) { ?>
<tr>
<td>news_date:</td>
<td>
<input name="news_date" type="text" readonly="true" value="<?php echo $list['news_date'];?>" size="20" maxlength="20"/>
<a href="javascript:showCal('Calendar1')">Select Date</a>
</td>
</tr>
...
?>
|
Да, так и делаю, но при выводе, в поле с датой, вместо даты, вот такая ошибка:
<br /><b>Notice</b>: Undefined index: news_date in <b>C:\Server\Apache2\htdocs\religion\manage_news.php</b> on line <b>178</b><br />
|
| |
|
|
|
|
|
|
|
для: codexomega
(09.06.2006 в 19:06)
| | Ну, это не повод для грусти:
$sql_select = "SELECT DATE_FORMAT(news_date,'%d/%m/%Y') as news_date, description ".
"FROM religion_news ".
"WHERE id = $update_element";
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.06.2006 в 19:20)
| | Здорово.
Работает.
Спасибо большое! | |
|
|
|
|
|
|
|
для: codexomega
(09.06.2006 в 19:27)
| | Я в шоке!
Сортировка то также не работает, как и прежде!!
На такой запрос:
SELECT id, DATE_FORMAT( news_date, '%d/%m/%Y' ) AS news_date, description
FROM religion_news
ORDER BY news_date DESC ;
|
Выводит это:
id -|- news_date -|- description
-------------------------------------------
6 -|- 25/10/2005 -|- В раздел Статьи добавлена поучительная суфийская с...
5 -|- 20/10/2005 -|- Добавлена статья о шабаше из книги Элифаса Леви...
4 -|- 19/10/2005 -|- Добавлены новые материалы в библиотеку: Сборник ко...
3 -|- 18/10/2005 -|- Обновление дизайна сайта
2 -|- 16/10/2005 -|- Добавление статей
1 -|- 10/08/2005 -|- Создание сайта.
9 -|- 07/06/2006 -|- Добавлен раздел Молитвы
|
Это результат прямого запроса в phpMyAdmin
Что за дребедень?
Впервые с таким сталкиваюсь. | |
|
|
|
|
|
|
|
для: codexomega
(09.06.2006 в 22:08)
| | Сами же news_date переделали. Теперь удивляетесь.
SELECT id, DATE_FORMAT( news_date, '%d/%m/%Y' ) AS news_date, description
FROM religion_news
ORDER BY religion_news.news_date DESC ;
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.06.2006 в 22:33)
| | Да, точно.
Примного вам благодарен. | |
|
|
|