У меня есть поле временной метки в таблице mysql, я хочу знать, была ли эта временная метка 24 часа или более. Как лучше всего сделать это в Perl?
Perl: как узнать, прошли ли 24 часа?
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
Кажется, хороший подход, но я не понимаю твои деньги? это временная метка типа данных mysql ', формат (т.е.) 1970-01-31 00:00:00
- person user3325861; 01.03.2014
он работал по желанию, но мне пришлось добавить код для преобразования метки времени 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
Было бы лучше, если бы вы просто добавили простой 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
А потом вы сами создаете метку времени?
- person Breaking not so bad; 01.03.2014