データベースに保管されているタイムスタンプが現在時刻の24時間以内かどうかを調べ、
24時間以内なら現在時刻、
そうでなかったら保管されているタイムスタンプの24時間後の時間を
書き込むSQL文。
24h.sql
update timelog set out_timestamp =
(select if(now() > (in_timestamp + interval 24 hour), in_timestamp + interval 24 hour, now())
where …
たぶんこれで大丈夫。
(24 hourのところは1 dayでもいいのかな?未確認。)
IF(expr1,expr2,expr3)
expr1 が TRUE である場合は ( expr1 <> 0 および expr1 <> NULL ) 、IF() は expr2 を戻します。それ以外では、expr3 を戻します。IF() は、使用されている文脈によって、数値値もしくはストリング値を戻します。