[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из БД даты и ее сортировка.
bobo
Добрый день, подскажите, как реализовать сортировку даты по возрастанию\убыванию при выборке ее из БД и перед записью в таблицу ?
Поле в базе не DATE, а просто varchar, дата записана в формате дд.мм.гггг



Спустя 2 минуты, 51 секунда (29.10.2010 - 07:59) Michael написал(а):
Цитата (bobo @ 29.10.2010 - 06:56)
Поле в базе не DATE, а просто varchar, дата записана в формате дд.мм.гггг

Поменяй лучше сразу на один из типов даты, например timestamp

Цитата
и перед записью в таблицу ?

строки в таблице хранятся в виде неупорядоченного множества.

Спустя 9 минут, 28 секунд (29.10.2010 - 08:08) bobo написал(а):
Изменить тип поля не получится, скрипты уже написаны, все переделывать не вариант.
И при чем тут, как хранятся записи в таблице ?
На данный момент конструкция выглядит так:
      
<?php
if ($selectobject) {
$querytarif = mysql_query("SELECT * FROM `tarif` WHERE `tridobj` = $selectobject ORDER BY `trdatestart` ASC") or die(mysql_error());
if (mysql_num_rows($querytarif) > 0) {
while ($arraytarif = mysql_fetch_assoc($querytarif)) {
?>
<tr>
<
td width='60'><?php echo $arraytarif['trdatestart']; ?></td>
<
td width='60'><?php echo $arraytarif['trdatefinish']; ?></td>
<
td width='30'><?php echo $arraytarif['trabonpay']; ?></td>
<
td width='30'><?php echo $arraytarif['trabonpayreal']; ?></td>
<
td><?php echo $arraytarif['trprim']; ?></td>
<
td width='10' <?php if ($arraytarif['trfire'] == 1) { echo "background-color:#f00; color:#f00"; } else if ($arraytarif['trfire'] == 0) { echo "color:#fff"; } ?>><?php echo $arraytarif['trfire']; ?></td>
<
td width='80'<?php $array_trchop = mysql_fetch_assoc(mysql_query("SELECT `choptype` FROM `choptype` WHERE `id` = '".$arraytarif['tridchop']."'")); echo $array_trchop['choptype']; ?></td>
<
td width='0' style='display:none'><?php echo $arraytarif['id']; ?></td>
<
td width='50'> <?php $array_truseredit = mysql_fetch_assoc(mysql_query("SELECT `login` FROM `users` WHERE `id` = '".$arraytarif['truseredit']."'")); echo $array_truseredit['login']; ?></td>
</
tr>
<?php
}
}


?>

Спустя 7 минут, 10 секунд (29.10.2010 - 08:15) linker написал(а):
Надо было сразу делать по уму или хотя бы писать в формате yyyy-mm-dd, тогда можно было бы и сортировать нормально. А так, совет - меняйте, переписывайте, много сил это не займет, тут работы всего ничего.

Спустя 2 минуты, 51 секунда (29.10.2010 - 08:18) bobo написал(а):
Ок, подскажите тогда, как при выборке из базы дату формата гггг-мм-дд преобразовывать в нужный мне формат дд.мм.гггг ?

Спустя 3 минуты, 5 секунд (29.10.2010 - 08:21) Michael написал(а):
Может так получится сортировать:
SELECT * FROM mytable ORDER BY STR_TO_DATE(твой_столбец, '%d.%m.%Y' ) DESC 

?

Спустя 11 минут, 20 секунд (29.10.2010 - 08:33) bobo написал(а):
Michael, даж не знаю, что и сказать smile.gif
Гениально! smile.gif Спасибо!

Спустя 14 секунд (29.10.2010 - 08:33) linker написал(а):
Так можно, непонятно нафига сознательно тормозить работу, видимо всего проекта.

Спустя 3 минуты, 46 секунд (29.10.2010 - 08:37) bobo написал(а):
Цитата (linker @ 29.10.2010 - 05:33)
Так можно, непонятно нафига сознательно тормозить работу, видимо всего проекта.

Отчасти ты прав, но в данном случае на скорость работы это не повлияет, а переписывать код, причем чужой, дело неблагодарное)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.