我的数据库中的数据:
loadtime | location
-------------------------------------
2000-May-08 10:45am | switzerland
2014-may-22 11:00am | canada
2014-may-22 10:40am | canada
我只想显示具有最新/当前加载时间的数据,例如刚刚过去的30分钟:
my $sqlstmt="SELECT loadtime from mydata
WHERE loadtime =sysdate -30/1440";
我想只显示新插入的数据。因此,如果没有新的插入数据,它将发送电子邮件通知。但我不知道如何实现这个?
答案 0 :(得分:0)
只需跟踪显示的最新记录的日期,并显示晚于30分钟的所有内容。
这样的事情应该做你需要的。请注意,它没有经过测试,只是它会编译。
use strict;
use warnings;
use DBI;
my ($dsn, $user, $pass) = ();
my $dbh = DBI->connect($dsn, $user, $pass) or die $DBI::errstr;
my ($latest) = $dbh->selectrow_array('SELECT sysdate - 0.5/24');
my $sth = $dbh->prepare(<<__END_SQL__);
SELECT loadtime, location
FROM table
WHERE (sysdate - loadtime) * 24 < 0.5
AND loadtime > ?
ORDER BY loadtime DESC
__END_SQL__
while () {
$sth->execute($latest);
my $rows = $sth->fetchall_arrayref;
# Display $rows
$latest = $rows->[0][0];
sleep 60;
}