mysql:3989
From: Tybalt of Capulet <Tybalt of Capulet <ice-man@xxxxxxxxxx>>
Date: Fri, 13 Jul 2001 01:01:33 +0900
Subject: [mysql 03989] INTERVAL がうまく動きません
神崎です。 INTERVALを使い該当データを削除しようとしているのですがうまくいきません。 [テーブル:A] id varchar(10) inputday timestamp [サンプルデータ] 1 20010713012030 2 20010713014030 3 20010713015030 下記の様なスクリプトをcronで動かしています。 ところがこれをAM2:45に動かすとデータが全て削除されてしまいます。 サンプルデータからするとINTERVALが1なのでidが1と2のデータが消えて 3は残って欲しいわけです。 --------------ここから------------------------------ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $mon = $mon + 1; $year += 1900; $mon = substr('0'.$mon,-2,2); $hour = substr('0'.$hour,-2,2); $nowday = $year.$mon.$mday.$hour.$min.$sec; # 1時間以上経過しているAテーブルのデータの削除 $sth = $dbh->prepare( qq{ DELETE FROM A WHERE (inputday + INTERVAL 1 HOUR) < ? }) || die "Can't prepare statement:" . $dbh->errstr . "\n"; $rc = $sth->execute($nowday) || die "Can't execute statement:"; $sth->finish; $dbh->disconnect(); exit; --------------ここまで------------------------------ ちなみに下記の様に?の部分に直接変数を入れると今度は 該当データが削除できません。 --------------ここから------------------------------ $sth = $dbh->prepare( qq{ DELETE FROM A WHERE (inputday + INTERVAL 1 HOUR) < $nowday }) || die "Can't prepare statement:" . $dbh->errstr . "\n"; $rc = $sth->execute || die "Can't execute statement:"; --------------ここまで------------------------------ INTERVALとtimestamp型の使い方が間違っているのでしょうか? どなたかおわかりのかた教えていただけませんでしょうか? [環境] mysql-3.23.39 perl v5.6.0 Red Hat Linux7.0 ________________________________R_y_u_____ 神崎 隆 Mail:ice-man@xxxxxxxxxx _____K_a_n_z_a_k_i________________________
-> 3989 2001-07-13 01:01 [Tybalt of Capulet <i] INTERVAL がうまく動きません 4003 2001-07-13 21:15 ┗[YONEMOTO Kazumasa <y] 4005 2001-07-14 00:40 ┗[Tybalt of Capulet <i]