はまった1
時刻を比較する場合、時刻型(time or datetime)を普通に加減算してたんやけど、これは全然認められていないことがわかった。例えば、開始時刻(StartDateTime)をカラムとして持つテーブルで、10秒前までのレコードを全部抜き出したかったら、
select * from some_table where now()-StartDateTime < 10
なんてやっちゃうとひどいめに遭います。。。しかもこれ、現在時刻が10秒〜59秒までなら正常に動くのでタチが悪いんです。
select now()-59
↑これでどんないけないことが起こるか簡単に確かめらます。
んで、正確にはどうするかというと、まぁ色々あるんですが、私は
select * from some_table where UNIX_TIMESTAMP()-UNIX_TIMESTAMP(StartDateTime) < 10
としてます。