|
|
|
| Добрый вечер. Подскажите пожалуйста решение моей задачи.
Есть новостной скрипт. Я сделал проверку на дату, тоесть если даты совпадают то рядом выводится надпись "new!", если не совпадают эта надпись не выводится. Но мне нужно что бы надпись высвечивалась на протяжении 3 дней. Тоесть каким образом найти разницу между 2 датами?
Учет времени не ведётся, только дата (г.м.ч).
В MySQL для сохранения даты я использую тип данных "tinytext"
Основная задача - нахождение разницы между 2 датами. От сегодняшней и 3 дня назад. | |
|
|
|
|
|
|
|
для: Mekomelo
(25.03.2008 в 23:01)
| | "г.м.ч" — это что ещё за формат даты? | |
|
|
|
|
|
|
|
для: Саня
(25.03.2008 в 23:07)
| | :) это не формат даты, извеняюсь за безответственность
дату я получаю date("Y.m.j") соответственно и формат даты Y.m.j | |
|
|
|
|
|
|
|
для: Mekomelo
(25.03.2008 в 23:24)
| | SELECT * FROM `tbl` WHERE DATE(`date`) >= NOW() - INTERVAL 3 DAY; | |
|
|
|
|
|
|
|
для: Mekomelo
(25.03.2008 в 23:01)
| | >В MySQL для сохранения даты я использую тип данных "tinytext"
это не правильно! для хранения даты специально разработано несколько типов данных mysql - date, time, datetime, timestamp... Исправьте и будет вам счастье))) То что вы хотите сделать можно будет сделать средствами mysql, при условии, что вы поправите типы полей | |
|
|
|
|
|
|
|
для: Mekomelo
(25.03.2008 в 23:01)
| | Сменить на TIMESTAMP тип поля, делать выборку из базы типа
SELECT *, UNIX_TIMESTAMP(`date`) AS `date` FROM `news_1` WHERE 1;
|
И в скрипте уже использовать что-то типа
...
// $date -- переменная из результата запроса.
$oneDay=60*60*24; // Персчитываем в секунды одни сутки.
if($date+($oneDay*3)>=time()){echo "New";} // Если значение (дата новости + 3 суток) больше, либо равно текущему времени, то выводим New.
...
|
Так же можно сделать это средствами MySQL, но только при условии если Вы смените тип данных на TIMESTAMP.
P.S. Вариант от Саня хорош. | |
|
|
|