Отсчет дней у каждой записи.

Sky_Flex

Новичок
Отсчет дней у каждой записи.

В БД есть записи где поле date - формируется unix_timestamp()
Как вытянуть сколько дней прошло с того момента что хранится в этом поле?
 

Sky_Flex

Новичок
спасибо. почитаю. :)

-~{}~ 28.10.05 15:19:

...нет не понимаю... у меня в БД ведь только одно поле с датой... и надо до сегодняшнего дня узнать сколько дней прошло...

вроде можно использовать TO_DAYS(date) типо посчитать сколько дней прошло лдо того дня что у нас в БД, и до сегодняшнего дня.... и вычесть...

т.е. 1-е то я узнаю... а как второе то сосчитать? в пхп то можно узнать сколько прошло дней до сегодняшней даты?

прошу помощи..!
 

Sky_Flex

Новичок
да нет. Ну вот не понимаю что-то.
1-е(сколько дней прошло до того дня что у меня в БД хранится) понял как получить(to_days(date))
А вот как сочтитать СКОЛЬКО ДНЕ до сегодняшнего дна прошло??? чтобы потом вычесть и получить количество дней с даты хранейся в БД до сегодняшнего.

П.С.: доки по ссылкам прочитал. но там ведь ВРОДЕ вычисляют если обе даты хранятся в БД...
 

nalevo

Новичок
ну возьми to_days(NOW()) это и будет кол-во дней до сегодняшнего дня, а если вычтешь свое to_days(date) вот тебе и разница в днях.
 

Sky_Flex

Новичок
тогда ведь
SELECT id, date, name, text, mail, TO_DAYS(NOW()) - TO_DAYS(date) AS days FROM stars_stories WHERE pid = '".$stars_id."' ORDER BY date DESC LIMIT 0,".$colvo." - должно работать?

ну т.е. как понял после вычисления прошедших дней к вычесленному числу можно обратится как к полю days ?
$days = $res_sql['days'];
 

dk

Новичок
Вот, например, в друпале, делают так:
format_interval(time() - $timestamp)

где function format_interval
Format a time interval with the requested granularity.
Parameters:
$timestamp The length of the interval in seconds.
$granularity How many different units to display in the string

function format_interval($timestamp, $granularity = 2) {
$units = array('1 year|%count years' => 31536000, '1 week|%count weeks' => 604800, '1 day|%count days' => 86400, '1 hour|%count hours' => 3600, '1 min|%count min' => 60, '1 sec|%count sec' => 1);
$output = '';
foreach ($units as $key => $value) {
$key = explode('|', $key);
if ($timestamp >= $value) {
$output .= ($output ? ' ' : '') . format_plural(floor($timestamp / $value), $key[0], $key[1]);
$timestamp %= $value;
$granularity--;
}

if ($granularity == 0) {
break;
}
}
return $output ? $output : t('0 sec');
}
 

Sky_Flex

Новичок
а как насчет моего запроса... он ведь неверен... как правильно его написать?
 

dk

Новичок
Получаешь timestamp и используешь format_interval
я пример взял из drupal.org.
Модуль common.inc
 

Sky_Flex

Новичок
незнаю... А без этой функции вроде ведь одним запросом можно получить сколько дне прошло? только что в запросе неправильно?

А функция... толи ночь... толи сам дурак - не пойму вообще что там делается... :(
 

Sky_Flex

Новичок
да не неустраивает... А то что как при выводе потом поля days ничего не выводится...

Пишу то правильно:

PHP:
$sql = mysql_query("SELECT id, date, name, text, mail, TO_DAYS(NOW()) - TO_DAYS(date) AS days FROM stars_stories WHERE pid = '".$stars_id."' ORDER BY date DESC LIMIT 0,".$colvo);
$res_sql = mysql_fetch_row($sql);
$days = $res_sql['days'];
$name = $res_sql['name'];
... или всетаки неправильно... :(
name выводит... days нет...
 

Sky_Flex

Новичок
вот и говорю что она пуста... как же вывести вычесленные значения?

( [6]=> NULL ["days"]=> NULL )
 

Sky_Flex

Новичок
PHP:
SELECT id, date, name, text, mail, (TO_DAYS(CURDATE()) - TO_DAYS(FROM_UNIXTIME(date))) AS days ...
Фанат ОгРОМНОЕ спасибо! ! ! Я Понял!!!
 
Сверху