При заноси в БД забиваем время в формате Unix.
Далее при выводе сообщения просто пишем проверку.
Код
<?php
//Функция проверки времени по дням и т.д.
function time_elapsed($time_passed){
$bit = array(
' year' => $time_passed / 31556926 % 12,
' week' => $time_passed / 604800 % 52,
' day' => $time_passed / 86400 % 7,
' hour' => $time_passed / 3600 % 24,
' minute' => $time_passed / 60 % 60,
' second' => $time_passed % 60
);
foreach($bit as $k => $v){
if($v > 1)$ret[] = $v . $k . 's';
if($v == 1)$ret[] = $v . $k;
}
array_splice($ret, count($ret)-1, 0, ' и ');
$ret[] = 'назад.';
return join(' ', $ret);
}
//Получаем прошедшее время в сек
$time_passed = Время из базы - time();
//Выводим
echo "Добавлено: ".time_elapsed($time_passed);
?>
В итоги должно получиться что то типа
Добавлено: 6 days 15 hours 48 minutes и 19 seconds назад.
Ну если помудрить то на русском правильно можно написать просто более строгие правила для слов фраз 1 Год; 5 Лет и т.д.
Не проверял, но должно работать.