MySQLのDATETIME型の演算

MySQLのDATETIME型のデータを演算させると、思いもよらない形になってしまった。
やりたかったことはdata型のデータフィールドと現在日時(now())を比較して、経過時間がどれだけか調べること。普通にUNIXTIMEに変換して処理できるものと思いこんでいたことが原因。

普通に

sql> SELECT (now() - datetime) FROM table;
とやると、どうも不思議な値が返ってきてしまう。
例えば、現在時刻を2007-07-22 10:05:00として、
datetimeが2007-07-22 10:03:00とすると、返り値は200になる。
datetimeが2007-07-22 09:55:00とすると、返り値は5000になる。
datetimeが2007-07-22 10:00:00とすると、返り値は500になる。
どういう事か、1分=100、1時間=10000になってしまうようだ。
このままでは、現在時刻によって経過時間が変わってしまう。

仕方ないのでTIMEDIFF()を使った。

SELECT timediff(now(), datetime) FROM table;
こうすると、返り値は'00:00:00'という形になる。
その為、返り値を再度「:(コロン)」で分割して、HH:MM:SSをS=SS+MM*60+HH*3600という形で利用することにした。

もっとスマートな方法がありそうな気がするのですが・・・。う〜む。