|
|
|
| ВСЕМ ПРИВЕТ! =)
Помогите, если не трудно:
из БД приходит время.
теперь надо сделать функцию чтоб она отдавала:
если сообщение оставлено сегодня, вместо времени писалось "сегодня",
если вчера, то соответственно "вчера",
а если большее время, то просто ставилась дата.
Я сначала сделал через Мускул
SELECT ....
CONCAT(
DATE_FORMAT(time,"%k:%i:%s "),
CASE DAYOFMONTH(time)
WHEN DAYOFMONTH(NOW())
THEN "(сегодня)"
WHEN DAYOFMONTH(NOW())-1
THEN "(вчера)"
ELSE
DATE_FORMAT(time,"(%d %b)")
END)
as `time`
FROM ....
|
но мне кажется, что-то неправильно... Да и запрос тяжелый. это для форума, т.е. много подобных запросов.
Если, через мускул будет правильней. То проверьте, правильно я написал или нет.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: а-я
(25.05.2008 в 10:05)
| | > WHEN DAYOFMONTH(NOW())-1
А если будет 1-ое число месяца? | |
|
|
|
|
|
|
|
для: BinLaden
(25.05.2008 в 10:07)
| | =) кажись про эту ошибку я и говорил)
а как тогда лучше? | |
|
|
|
|
|
|
|
для: а-я
(25.05.2008 в 10:24)
| | Можно сделать так:
SET @today = TO_DAYS(NOW()), @yesterday = TO_DAYS(TIMESTAMP(NOW(), '-24:00:00'));
|
SELECT ...
CONCAT(
DATE_FORMAT(`time`, "%k:%i:%s "),
CASE TO_DAYS(`time`)
WHEN @today
THEN "(сегодня)"
WHEN @yesterday
THEN "(вчера)"
ELSE
DATE_FORMAT(`time`, "(%d %b)")
END)
as `time`;
FROM ...
|
P.S. TO_DAYS() нужно, чтобы отличать реальные "сегодняшние" и "вчерашние" даты от других с таким же номером дня в месяце. | |
|
|
|
|
|
|
|
для: BinLaden
(25.05.2008 в 10:52)
| | Да... Большое спасибо. =) так намного лучше... | |
|
|
|