timestamp型の値をperlから計算してハマった。

postgresqlのデータベーステーブルに入っているtimestamp型の値を1日進めた値が欲しかった。

やり方は、
■ - fyamaの日記に書いている通りやって、できた。

my $v_time = "'2009-03-24 16:00:00'";
my $v_interval = "'+1 day'";
my $query = "SELECT CAST(? AS TIMESTAMP) + CAST(? AS INTERVAL)";
my $db_retref = $dbh->selectall_arrayref($query, undef, $v_time, $v_interval);

でも、ちょっとハマった。

my $db_retref = $dbh->selectall_arrayref($query, undef, $v_time, $v_interval);

selectall_arrayrefは「全データを配列の配列参照として取り出す」なので参照が帰ってくる。
だから、実際の値を取り出すには以下のようにする必要がある。

$limit_day = $limit_day_ref->[0][0];

以下も同じ結果。

$limit_day = $$limit_day_ref[0][0];

以下は違う。

$limit_day = $$limit_day_ref[0];