期間を指定したSQL(〜秒以内のレコードを対象にする)

 〜秒以内のレコードを対象にする where 節. 直接文字で入力するとDBサーバーと呼び出し側の時刻設定が違った場合に,予期しない結果が帰ったりするので,どちらを使用するかは考えよう.

SELECT DISTINCT userid FROM user_data WHERE lastupdate < NOW() AND lastupdate > SUBDATE(NOW(), INTERVAL 1800 SECOND);

SELECT DISTINCT userid FROM user_data WHERE lastupdate < NOW() AND lastupdate > "2011-03-30 17:**:00";

ちなみにTIMESTAMPDIFFを使用すると遅いです.例えばこう

TIMESTAMPDIFF(SECOND, lastupdate, NOW()) BETWEEN 0 AND 86400