[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнение дат
Ramzil_Nixon
Как сравнить даты? а то я тут малек не понимаю



Спустя 7 минут, 25 секунд (8.12.2011 - 12:45) fire написал(а):
Привести те даты что будешь сравнивать в один тип, например timestamp а потом уже делать с ними что нужно. Тут на форуме уже обсуждалось вроде.

Спустя 4 минуты, 19 секунд (8.12.2011 - 12:49) ИНСИ написал(а):
Ramzil_Nixon может ты имел в виду узнать разницу в датах?

Спустя 3 минуты, 50 секунд (8.12.2011 - 12:53) Winston написал(а):
Нужно уточнять, какие даты ты сравниваешь? Покажи, что нужно сравнить ?

Спустя 3 минуты, 11 секунд (8.12.2011 - 12:56) Ramzil_Nixon написал(а):
постараюсь объяснять что я хочу сделать:

например есть форум. там темы надо отсортировать по дате. ну вроде как разобрался, но появилась такая проблема. (сортирую по дате комментариев). если создаю новую тему, тема без комментариев остается внизу, а хочу даже если без комментариев появилась наверху. то есть темы спуститься по дате комментариев. темы и комментарии находятся оба на отдельных таблицах.

Спустя 1 минута, 26 секунд (8.12.2011 - 12:58) Ramzil_Nixon написал(а):
Winston
Пока не могу код выложить, с телефона лежу.

Спустя 2 часа, 45 минут, 13 секунд (8.12.2011 - 15:43) bodja написал(а):
Цитата
а хочу даже если без комментариев появилась наверху

А чем отличается пост ТС от других ? wink.gif

Спустя 32 минуты, 50 секунд (8.12.2011 - 16:16) Ramzil_Nixon написал(а):
bodja
Не совсем понял

Спустя 6 минут, 27 секунд (8.12.2011 - 16:22) Placido написал(а):
Если таблицы те же, что и в предыдущем вопросе, то вот вариант решения:
SELECT 
`topik_forum`.*,
CASE
WHEN
`comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
FROM
`topik_forum`
LEFT JOIN
`comment_topik` ON `topik_forum`.`id` = `comment_topik`.`id_topik`
GROUP BY `topik_forum`.`id`
ORDER BY `finaldata` DESC;

Спустя 41 минута, 10 секунд (8.12.2011 - 17:03) Ramzil_Nixon написал(а):
Вот у меня такой запрос:

	$query_topiks = mysql_query("SELECT * FROM `topik_forum` 
LEFT JOIN `comment_topik` ON
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '"
.$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `comment_topik`.`data` DESC
"
) or die(mysql_error()); // Запрашиваем нужные темы

Спустя 2 часа, 15 минут, 3 секунды (8.12.2011 - 19:18) Ramzil_Nixon написал(а):
Placido, а не сложно каждую строку комментарий написать? biggrin.gif А то я тут не понимаю, что к чему smile.gif

Спустя 29 минут, 29 секунд (8.12.2011 - 19:48) Placido написал(а):
В целом я уже объяснял вот здесь. Новое -
CASE
WHEN
`comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
- если в поле `comment_topik`.`data` пусто (т.е. комменты отсутствуют), то в поле `finaldata` вставляется дата создания топика (`topik_forum`.`data`), если комменты есть (в поле `comment_topik`.`data` не NULL), то вставляется время последнего обновления комментария к этой теме (MAX(`comment_topik`.`data`) + группировка по `topik_forum`.`id` (GROUP BY `topik_forum`.`id`)). Потом полученная таблица сортируется по "комбинированному" полю `finaldata`.

Спустя 6 минут, 40 секунд (8.12.2011 - 19:54) Ramzil_Nixon написал(а):
Placido, про GROUP я понял, а для чего MAX() ?

Спустя 13 минут, 21 секунда (8.12.2011 - 20:08) Placido написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 18:54)
Placido, про GROUP я понял, а для чего MAX() ?

Ты выбираешь максимальное значение (читай - самую позднюю дату) из поля `comment_topik`.`data` (MAX(`comment_topik`.`data`)), для каждого значения в поле `topik_forum`.`id` (GROUP BY `topik_forum`.`id`).

Спустя 2 минуты, 59 секунд (8.12.2011 - 20:11) Ramzil_Nixon написал(а):
Placido, то есть MAX выбирает максимальную дату?

Спустя 5 минут, 8 секунд (8.12.2011 - 20:16) cripten написал(а):
для вывода даты в нормальном формате используй это http://php.su/functions/?date

Спустя 50 секунд (8.12.2011 - 20:17) Placido написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 19:11)
Placido, то есть MAX выбирает максимальную дату?

Здесь - да.

Спустя 53 секунды (8.12.2011 - 20:18) Ramzil_Nixon написал(а):
Цитата (cripten @ 8.12.2011 - 17:16)
для вывода даты в нормальном формате используй это http://php.su/functions/?date

А что так нельзя?
 DATE_FORMAT(`data`, '".$data_format."')

Спустя 59 секунд (8.12.2011 - 20:19) Ramzil_Nixon написал(а):
Цитата (Placido @ 8.12.2011 - 17:17)
Здесь - да.

Ясно, ну я попробую

Спустя 36 минут, 6 секунд (8.12.2011 - 20:55) Ramzil_Nixon написал(а):
Появилась такая ошибка:

Цитата
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE' at line 2

Спустя 4 минуты, 36 секунд (8.12.2011 - 20:59) Winston написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 19:55)
Появилась такая ошибка

Спустя 47 секунд (8.12.2011 - 21:00) Placido написал(а):
Покажи сам запрос.

Спустя 45 секунд (8.12.2011 - 21:01) Ramzil_Nixon написал(а):
Winston
Цитата (Winston @ 8.12.2011 - 17:59)
Переводчик надо ?


Да нет biggrin.gif

Просто думать что то последние пару часов лень smile.gif вот и спрашиваю biggrin.gif

Спустя 37 секунд (8.12.2011 - 21:01) Ramzil_Nixon написал(а):
Цитата (Placido @ 8.12.2011 - 18:00)
Покажи сам запрос.

	$query_topiks = mysql_query("SELECT * FROM `topik_forum` 
CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
LEFT JOIN `comment_topik` ON
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '"
.$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `finaldata` DESC
"
) or die(mysql_error()); // Запрашиваем нужные темы

Спустя 1 минута, 29 секунд (8.12.2011 - 21:03) Winston написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 20:01)
Просто думать что то последние пару часов лень

Афигеть не встать! Может пора отдохнуть ? smile.gif

Спустя 50 секунд (8.12.2011 - 21:04) Ramzil_Nixon написал(а):
Цитата (Winston @ 8.12.2011 - 18:03)
Афигеть не встать! Может пора отдохнуть ?


Ну надо бы, но пока не убью эту ошибку, не лягу biggrin.gif

Спустя 1 минута, 50 секунд (8.12.2011 - 21:06) Placido написал(а):
SELECT *, CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE MAX(`comment_topik`.`data`) END AS `finaldata` FROM...

Спустя 2 минуты, 36 секунд (8.12.2011 - 21:08) Ramzil_Nixon написал(а):
Placido,
	$query_topiks = mysql_query("SELECT *, CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE MAX(`comment_topik`.`data`) END AS `finaldata` FROM `topik_forum` 
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '"
.$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `finaldata` DESC
"
) or die(mysql_error()); // Запрашиваем нужные темы


Ошибка не исчезла:

Цитата
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE `id_for`  = '1' ' at line 2

Спустя 7 минут, 22 секунды (8.12.2011 - 21:16) Placido написал(а):
А куда LEFT JOIN делся?

Спустя 1 минута, 26 секунд (8.12.2011 - 21:17) Placido написал(а):
Тебе всего-то было надо после * поставить запятую и поменять местами FROM `topik_forum` и часть с CASE.

Спустя 24 секунды (8.12.2011 - 21:17) Ramzil_Nixon написал(а):
Placido, тьфу балин! Голова не работает вообще, ладно придется завтра соображать. Метод тыка не помогает biggrin.gif


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

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