Реклама на сайте Advertise with us

Как правильно сделать сортировку по DateTime

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 31/01/06 в 17:33       Ответить с цитатойцитата 

В MySQL таблице полю с типом DATETIME присваивается текущие дата и время при сабмите следующим образом:
date("y.m.d:h.h.s") (РНР)
Это для того чтобы потом при выборке можно было сортировать по дате/времени поста.
Затем делаю выборку запросом:
"SELECT * FROM table ORDER BY `DATETIME` DESC"
Должен бы отсортировать по полю DATETIMЕ. Но выборка делается как зря. В чем я неправ?

0
 

www.awm-tools.com

С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056


Передовик Master-X (01.01.2006) Передовик Master-X (16.01.2006) Передовик Master-X (01.03.2006)
Ссылка на сообщениеДобавлено: 31/01/06 в 17:44       Ответить с цитатойцитата 

В таком случае лучше делать тип поля int, и класть туда значение php-функции time().
А в данной ситуации в каком порядке производится выборка при ORDER BY 'DATETIME' DESC ?

Засабмить свой вебмастерский ресурс, получи PR!

0
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 31/01/06 в 17:45       Ответить с цитатойцитата 

В отбалдовом, логики не уловил. Но всегда в одном.

Т.е. для времени отдельное поле завести?

0
 

www.awm-tools.com

С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056


Передовик Master-X (01.01.2006) Передовик Master-X (16.01.2006) Передовик Master-X (01.03.2006)
Ссылка на сообщениеДобавлено: 31/01/06 в 17:52       Ответить с цитатойцитата 

EagleOwl писал:
В отбалдовом, логики не уловил. Но всегда в одном.

Значит что-то не так в столбце DATETIME. Посмотри там значения.
EagleOwl писал:
Т.е. для времени отдельное поле завести?

Ну у тебя есть поле DATETIME, вот им и воспользуйся. Только тип поля смени и клади в него time(). Эта функция содержит информацию о времени и дате. Выковырнуть можно с помощью функции date().

Засабмить свой вебмастерский ресурс, получи PR!

0
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 31/01/06 в 17:54       Ответить с цитатойцитата 

Напиши пример присвоения например переменной такого значения плиз. С полным выковыриванием даты/времени.

0
 

www.awm-tools.com

С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056


Передовик Master-X (01.01.2006) Передовик Master-X (16.01.2006) Передовик Master-X (01.03.2006)
Ссылка на сообщениеДобавлено: 31/01/06 в 18:06       Ответить с цитатойцитата 

EagleOwl писал:
Напиши пример присвоения например переменной такого значения плиз. С полным выковыриванием даты/времени.

Кладем значение в базу:
Код:
$time = time();         //Кладем текущее время
$info = $HTTP_POST_VARS['info'];
$query = "insert into table (time, info) values ('$time', '$info')";

Читаем значение из базы:
Код:
$query = "select * from table order by time desc";
$time = ...
$info = ...
$vremya = date("d.m.y H:i:s",$time);

Засабмить свой вебмастерский ресурс, получи PR!

5
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 31/01/06 в 18:11       Ответить с цитатойцитата 

Спасибо. Оценил.

0
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 31/01/06 в 18:14       Ответить с цитатойцитата 

Тип поля TIME в базе должен быть INT?

0
 

www.awm-tools.com

С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056


Передовик Master-X (01.01.2006) Передовик Master-X (16.01.2006) Передовик Master-X (01.03.2006)
Ссылка на сообщениеДобавлено: 31/01/06 в 18:15       Ответить с цитатойцитата 


Да.

Засабмить свой вебмастерский ресурс, получи PR!

5
 

эксклюзивщик

С нами с 08.03.05
Сообщения: 1013
Рейтинг: 512

Ссылка на сообщениеДобавлено: 31/01/06 в 23:10       Ответить с цитатойцитата 

еще проще делать если ставить тип TIMESTAMP и выбрать current, тогда будет автоматом вноситься дата апдейта. Или дата создания... не помню. хм.
зы. а у тебя еще в первом посте была ошибка - date("y.m.d:h.h.s") ты вместо минут вводишь часы

уникальные предложения по съемке контента гомосексуального харрактера

1
 



С нами с 26.03.05
Сообщения: 119
Рейтинг: 44

Ссылка на сообщениеДобавлено: 01/02/06 в 19:15       Ответить с цитатойцитата 

Тут вообще РНР-функции не нужны, все делается на чистом SQL:
Код:
CREATE TABLE `table` (
  `info` varchar(255) NOT NULL default '',
  `time` timestamp(14) NOT NULL
) TYPE=MyISAM;

insert into `table` set info = 'Poshli vse na huy',  `time` = CURRENT_TIMESTAMP;
select * from `table` order by `time` desc;

И тип TIMESTAMP вовсе не обязателен. Можно спокойно делать то же самое и в DATETIME.
Код:
CREATE TABLE `table` (
  `info` varchar(255) NOT NULL default '',
  `time` datetime default NULL
) TYPE=MyISAM;

2
 

эксклюзивщик

С нами с 08.03.05
Сообщения: 1013
Рейтинг: 512

Ссылка на сообщениеДобавлено: 01/02/06 в 22:35       Ответить с цитатойцитата 

Erectronic писал:
Тут вообще РНР-функции не нужны, все делается на чистом SQL:
Код:
CREATE TABLE `table` (
  `info` varchar(255) NOT NULL default '',
  `time` timestamp(14) NOT NULL
) TYPE=MyISAM;
insert into `table` set info = 'Poshli vse na huy',  `time` = CURRENT_TIMESTAMP;
select * from `table` order by `time` desc;

И тип TIMESTAMP вовсе не обязателен. Можно спокойно делать то же самое и в DATETIME.
Код:
CREATE TABLE `table` (
  `info` varchar(255) NOT NULL default '',
  `time` datetime default NULL
) TYPE=MyISAM;

ну если сделать тип TIMESTAMP то и строка `time` = CURRENT_TIMESTAMP совсем не нужна. Так удобнее ИМХО

уникальные предложения по съемке контента гомосексуального харрактера

1
 



С нами с 26.03.05
Сообщения: 119
Рейтинг: 44

Ссылка на сообщениеДобавлено: 01/02/06 в 23:07       Ответить с цитатойцитата 

=ZeD= писал:
ну если сделать тип TIMESTAMP то и строка `time` = CURRENT_TIMESTAMP совсем не нужна. Так удобнее ИМХО

Согласен.
Правда тут есть один нюанс. В этом случае `time` будет обновляться на текущее время при каждом запросе UPDATE.
Если такой вариант не устраивает, тогда удобнее DATETIME.
Цитата:
You can set any `TIMESTAMP' column to a value different from the current
date and time by setting it explicitly to the desired value. This is
true even for the first `TIMESTAMP' column. You can use this property
if, for example, you want a `TIMESTAMP' to be set to the current date
and time when you create a row, but not to be changed whenever the row
is updated later:

* Let MySQL set the column when the row is created. This will
initialise it to the current date and time.

* When you perform subsequent updates to other columns in the row,
set the `TIMESTAMP' column explicitly to its current value.

On the other hand, you may find it just as easy to use a `DATETIME'
column that you initialise to `NOW()' when the row is created and leave
alone for subsequent updates.

1
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 03/02/06 в 15:23       Ответить с цитатойцитата 

Причину неправильной сортировки так никто и не заметил.
А я нашел ее таки. Део в том что для Date совершенно неверно задавались параметры.

Было:
date("y.m.d:h.h.s")

А НАДО-ТО:
date("Y.m.d:H.i.s")

Вот и все.

0
 

эксклюзивщик

С нами с 08.03.05
Сообщения: 1013
Рейтинг: 512

Ссылка на сообщениеДобавлено: 03/02/06 в 22:05       Ответить с цитатойцитата 

врешь, я половину заметил icon_smile.gif
Цитата:
зы. а у тебя еще в первом посте была ошибка - date("y.m.d:h.h.s") ты вместо минут вводишь часы

уникальные предложения по съемке контента гомосексуального харрактера

5
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 08/02/06 в 11:32       Ответить с цитатойцитата 

=ZeD=: Ну тогда держи свой рейтинг.

0
 

www.awm-tools.com

С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056


Передовик Master-X (01.01.2006) Передовик Master-X (16.01.2006) Передовик Master-X (01.03.2006)
Ссылка на сообщениеДобавлено: 08/02/06 в 11:41       Ответить с цитатойцитата 

EagleOwl писал:
Причину неправильной сортировки так никто и не заметил.
А я нашел ее таки. Део в том что для Date совершенно неверно задавались параметры.
Было:
date("y.m.d:h.h.s")
А НАДО-ТО:
date("Y.m.d:H.i.s")
Вот и все.

Гыыы... А я думал, что это ты здесь опечатался... Поэтому специально не стал поднимать эту тему...

Засабмить свой вебмастерский ресурс, получи PR!

1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »