Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подсчет времени, пожскажите.
Форумы портала PHP.SU » » Вопросы новичков » Подсчет времени, пожскажите.

Страниц (1): [1]
 

1. antobra - 19 Сентября, 2011 - 14:18:37 - перейти к сообщению
База Postgre. В одной из таблиц есть столбец timestamp, который отображает данные в виде YYYY-MM-DD HH-MM-SS.

Сейчас делаю функцию суть которой заключается в следующем. Нужно изъять соответствующую строку, где присутствует этот timestamp, но не просто вывести, а подсчитать - прошло ли 5 минут от этого времени.

Из этого не знаю как сделать подсчет 5 ти минут. Т.е. прошли или не прошли.

Как сделать? Переводить все в секунды? Или есть другие варианты?

Как всегда, с меня плюсик в "Помог".
2. EuGen - 19 Сентября, 2011 - 14:21:54 - перейти к сообщению
SELECT * FROM your_table WHERE your_field + INTERVAL 5 MINUTE < NOW()

- сработает и в Postgree

http://developer[dot]postgresql[dot]org/[dot][dot][dot]ns-datetime[dot]html
3. antobra - 19 Сентября, 2011 - 14:50:03 - перейти к сообщению
EuGen, а как подсчитать, чтобы не делать доп. запрос в базу? Можно ли сделать силой PHP?
4. EuGen - 19 Сентября, 2011 - 14:52:47 - перейти к сообщению
Так Вы же в любом случае должны сделать выборку. Данные ведь в БД хранятся. php здесь не поможет.
Сделайте выборку - условие я Вам привел - получите все записи, которые старее 5 минут относительно текущего времени.
5. garvey - 19 Сентября, 2011 - 14:56:06 - перейти к сообщению
EuGen, возможно у топикстартера уже выбраны данные и ему нужно их отсортировать уже не на уровне СУБД. Можно в PHP вот так:
PHP:
скопировать код в буфер обмена
  1. if (time() - strtotime($timestampFromDB) >= 5*60) {
  2.     echo 'Прошло больше 5-ти минут';
  3. }
6. White - 19 Сентября, 2011 - 15:06:45 - перейти к сообщению
EuGen пишет:
php здесь не поможет
а как же mktime()
PHP:
скопировать код в буфер обмена
  1. $date=explode('-',str_replace(' ','-',$timestamp));
  2. $time_limit=mktime($date[3],$date[4],$date[5],$date[2],$date[1],$date[0])+300;
  3. if(time()>$time_limit) {
  4. ...
  5. }

но по поводу целесообразности приведенного вами способа согласен на 100%
garvey указанный синтаксис записи времени не соответствует strtotime() может не сработать
7. garvey - 19 Сентября, 2011 - 15:07:34 - перейти к сообщению
White, сработает, проверял.
8. White - 19 Сентября, 2011 - 15:15:14 - перейти к сообщению
garvey
PHP:
скопировать код в буфер обмена
  1. $time = strtotime('2011-09-19 15-15-00');
  2. echo date('c', $time);

вот и я проверил, так не работает (именно так пишет автор)
PHP:
скопировать код в буфер обмена
  1. $time = strtotime('2011-09-19 15:15:00');
  2. echo date('c', $time);

а так работает (в соответствии стандарту)
9. garvey - 19 Сентября, 2011 - 15:19:17 - перейти к сообщению
White, извините. Когда проверял, по привычке написал ":" вместо "-" во времени.
10. White - 19 Сентября, 2011 - 15:19:54 - перейти к сообщению
garvey Подмигивание вот и я о чем.
11. EuGen - 19 Сентября, 2011 - 15:31:48 - перейти к сообщению
antobra пишет:
Сейчас делаю функцию суть которой заключается в следующем. Нужно изъять соответствующую строку

garvey пишет:
EuGen, возможно у топикстартера уже выбраны

Подозреваю, что все же не сделано.
А что с помощью функций дат PHP можно сделать - несомненно. Я имел ввиду что никакие функции дат Вам не помогут выбрать данные из таблицы БД.

 

Powered by ExBB FM 1.0 RC1