|
|
|
| данные сортируются по дате неверно. вывод идет по дате, а не по месяцу.
25-11-2011 в 07:22
24-11-2011 в 10:40
18-01-2012 в 17:19
04-11-2011 в 21:30
$result = mysql_query("SELECT * FROM bd WHERE post='" . mysql_real_escape_string($id) . "' ORDER BY date DESC, id", $db);
|
подскажите, как исправить и как чтобы вывод шел в формате: 1 декабрь 2011 | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 18:11)
| | Переделать формат даты в базе.
а что бы месяц был прописью, то в начале надо месяц вырезать из всей даты, а потом вместо даты подставить буквы.
У меня например, день, месяц и год хранятся в разных столбцах, так на много гибче получается. | |
|
|
|
|
|
|
|
для: Aidaho
(18.01.2012 в 18:20)
| | >У меня например, день, месяц и год хранятся в разных столбцах, так на много гибче получается
Где же тут гибкость? O_o | |
|
|
|
|
|
|
|
для: Igorek
(18.01.2012 в 19:47)
| | ну например даты можно вертеть как хочешь, можно вытянуть отдельно день и обозвать его хоть срундельником....
все лучше по моему чем в сабже...
конечно лучше всего в таймстапе, но я например все никак не могу с ним заморочиться и постоянно о нем забываю | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 18:11)
| | А вы их прямо так и храните в виде строки "25-11-2011 в 07:22"? Лучше хранить в календарном типе СУБД - он сортируется корректно, а в нужный формат преобразовывать уже при выводе даты на страницу. Строки же сортируются как строки, их уже не отсортируешься как даты (можно, конечно, но большой кровью). | |
|
|
|
|
|
|
|
для: cheops
(18.01.2012 в 18:20)
| | у меня
date
varchar(30)
cp1251_general_ci
|
что нужно поменять в БД чтобы получить желаемый результат? | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 19:52)
| | Насколько ценные данные в столбце? Их не жалко потерять, или нужно преобразовать таблицу без потерь? | |
|
|
|
|
|
|
|
для: cheops
(18.01.2012 в 19:54)
| | желательно без потерь | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 22:54)
| | Тогда алгоритм следующий:
1. Рядом с существующим, создаем новый столбец типа DATETIME
2. Переносим в него данные, если мало - вручную, если много - при помощи скрипта.
3. Удаляем старый столбец VARCHAR.
4. Присваиваем новому столбцу имя старого столбца | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 22:54)
| | Войди в phpMyAdmin и просто поменяй тип столбца в структуре таблицы. Потерь данных не должно произойти. Но, на всякий случай, можешь для начала дамп сохранить | |
|
|
|
|
|
|
|
для: kosta_in_net
(19.01.2012 в 13:52)
| |
date varchar(30) 14-11-2011 в 10:15
date1 datetime 0000-00-00 00:00:00
|
потом удалил date, а date1 переименовал в date
теперь вводим комментарий, но дата и время одни нули
0000-00-00 00:00:00 | |
|
|
|
|
|
|
|
для: Василий
(19.01.2012 в 17:01)
| | Лучше по-моему алгоритму идти :) | |
|
|
|
|
|
|
|
для: cheops
(19.01.2012 в 23:41)
| | Сколько людей - столько и мнений | |
|
|
|
|
|
|
|
для: kosta_in_net
(20.01.2012 в 00:20)
| | Смысл в том, что дату вида "25-11-2011 в 07:22" нужно трансформировать в "2011-11-25 07:22", это действительно лучше скриптом делать... ну можно без лишних столбцов, сначала произвести трансформацию, а затем сменить тип столбца при помощи ALTER TABLE. Теоретически можно осуществить преобразование лишь средствами MySQL, но запрос получиться довольно монструозный. | |
|
|
|
|
|
|
|
для: cheops
(20.01.2012 в 02:28)
| | Не обратил внимание на нестандартный формат даты у человека... Как рах изходя из того, что могут возникнуть подводные камни, писал про дамп данных перед преобразованием.
Но для преобразования в том же админе достаточно выполнить запрос:
UPDATE basename SET date=CONCAT(SUBSTRING(date,7,4),SUBSTRING(date,3,4),SUBSTRING(date,1,2),SUBSTRING(date,13,6))
|
| |
|
|
|
|
|
|
|
для: Василий
(19.01.2012 в 17:01)
| | Если поле имеет такие параметры:
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Дата при добавлении и обновлении вставляется автматически.
При отсутствии DEFAULT CURRENT_TIMESTAMP, временную метку при добавлении нужно формировать скриптом | |
|
|
|