SET TIMESTAMP 構文で時刻の固定
SELECT * FROM hidek WHERE created_on < UNIX_TIMESTAMP() - ? ORDER BY created_on ASC LIMIT 100;
とかそういうクエリをテストしたい場合、Fixture の日時が固定値だと色々と不都合がありますね。
そういう時は、http://dev.mysql.com/doc/refman/5.1/ja/set-option.html にある SET 構文の SET TIMESTAMP を使うとセッションごとに UNIX_TIMESTAMP(), NOW() の値を固定出来ます。
root@localhost[test]:14> SET TIMESTAMP = 1302447600; Query OK, 0 rows affected (0.00 sec) root@localhost[test]:15> SELECT UNIX_TIMESTAMP(); +------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1302447600 | +------------------+ 1 row in set (0.00 sec) root@localhost[test]:12> SET TIMESTAMP = DEFAULT; Query OK, 0 rows affected (0.00 sec) root@localhost[test]:13> SELECT UNIX_TIMESTAMP(); +------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1305711386 | +------------------+ 1 row in set (0.00 sec)
こんな感じアル!