Perl: как узнать, прошли ли 24 часа?

У меня есть поле временной метки в таблице mysql, я хочу знать, была ли эта временная метка 24 часа или более. Как лучше всего сделать это в Perl?


person user3325861    schedule 01.03.2014    source источник
comment
Все будет зависеть от загрузки базы данных, используете ли вы инструменты в БД или в процессе Perl. Ниже приведены несколько хороших ответов для каждого из них.   -  person alexmac    schedule 01.03.2014


Ответы (4)


По метке времени я предполагаю, что это метка времени Unix, то есть секунды с эпохи.

my $ts       = 1393662619;
my $day_24hr = 24 * 60 * 60;    ## seconds in 24 hrs

my $prev_time = time() - $day_24hr;    ## 24hours ago

if ( $ts < $prev_time ) {
    print "timestamp is 24 hour old";
}
person Pradeep    schedule 01.03.2014
comment
Кажется, хороший подход, но я не понимаю твои деньги? это временная метка типа данных mysql ', формат (т.е.) 1970-01-31 00:00:00 - person user3325861; 01.03.2014
comment
он работал по желанию, но мне пришлось добавить код для преобразования метки времени mysql в метку времени unix - person user3325861; 02.03.2014

SQL, который вернет отметку времени 24 часа назад.

SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR) 

Теперь, если ваша временная метка ‹метка времени, возвращенная вышеуказанным SQL, прошло 24 часа.

person Nishant Shrivastava    schedule 01.03.2014

Лучше всего позволить базе данных делать всю работу. См. инструкцию SQL, чтобы выбрать все строки за предыдущий день для примера.

person choroba    schedule 01.03.2014
comment
Было бы лучше, если бы вы просто добавили простой SQL в качестве примера. - person Neil Lunn; 01.03.2014

Для этого вы можете использовать localtime.

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($unix_timestamp);
person Chankey Pathak    schedule 01.03.2014
comment
А потом вы сами создаете метку времени? - person Breaking not so bad; 01.03.2014