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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
antobra
Отправлено: 19 Сентября, 2011 - 14:18:37
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




База Postgre. В одной из таблиц есть столбец timestamp, который отображает данные в виде YYYY-MM-DD HH-MM-SS.

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

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

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

Как всегда, с меня плюсик в "Помог".
 
 Top
EuGen Администратор
Отправлено: 19 Сентября, 2011 - 14:21:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
antobra
Отправлено: 19 Сентября, 2011 - 14:50:03
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




EuGen, а как подсчитать, чтобы не делать доп. запрос в базу? Можно ли сделать силой PHP?
 
 Top
EuGen Администратор
Отправлено: 19 Сентября, 2011 - 14:52:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так Вы же в любом случае должны сделать выборку. Данные ведь в БД хранятся. php здесь не поможет.
Сделайте выборку - условие я Вам привел - получите все записи, которые старее 5 минут относительно текущего времени.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
garvey
Отправлено: 19 Сентября, 2011 - 14:56:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




EuGen, возможно у топикстартера уже выбраны данные и ему нужно их отсортировать уже не на уровне СУБД. Можно в PHP вот так:
PHP:
скопировать код в буфер обмена
  1. if (time() - strtotime($timestampFromDB) >= 5*60) {
  2.     echo 'Прошло больше 5-ти минут';
  3. }
 
 Top
White
Отправлено: 19 Сентября, 2011 - 15:06:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




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() может не сработать


-----
if(time()>1356048000) die();
 
 Top
garvey
Отправлено: 19 Сентября, 2011 - 15:07:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




White, сработает, проверял.
 
 Top
White
Отправлено: 19 Сентября, 2011 - 15:15:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




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);

а так работает (в соответствии стандарту)


-----
if(time()>1356048000) die();
 
 Top
garvey
Отправлено: 19 Сентября, 2011 - 15:19:17
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




White, извините. Когда проверял, по привычке написал ":" вместо "-" во времени.
 
 Top
White
Отправлено: 19 Сентября, 2011 - 15:19:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




garvey Подмигивание вот и я о чем.


-----
if(time()>1356048000) die();
 
 Top
EuGen Администратор
Отправлено: 19 Сентября, 2011 - 15:31:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




antobra пишет:
Сейчас делаю функцию суть которой заключается в следующем. Нужно изъять соответствующую строку

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

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB