SQLで更新日付が新しい方のテーブルを知りたい
日次でRDBのテーブルが切り替わる処理があるとします。例えば、今日はtable1で明日はtable2、明後日はtable1という具合です。で、今日はどっちだろう?と調べたいときに、そのテーブルの更新タイムスタンプからしか判断できない場合に最新のテーブルを調べるSQLを書こうと思いました。RDBMSはOracleです。テーブルにupdate_timestamp(TIMESTAMP型)という列があったので、次のようなSQLを書きました。日付を比較してテーブル名を返す作戦です。
SELECT CASE( TO_DATE( SELECT TO_CHAR(update_timestamp, 'YYYYMMDD') FROM table1 WHERE ROWNUM = 1), 'YYYYMMDD') - TO_DATE( SELECT TO_CHAR(update_timestamp, 'YYYYMMDD') FROM table2 WHERE ROWNUM = 1), 'YYYYMMDD') ) WHEN 1 THEN 'table1' WHEN -1 THEN 'same day' WHEN -1 THEN 'table2' ELSE 'error' END "RECENTLY UPDATED TABLE IS" FROM DUAL;
本当はtable1の更新タイムスタンプtable2の更新タイムスタンプより大きいかどうかだけで判定したかったのですが、DATE型で差をとって日をCASEで判定するという面倒くさいものになってしまいました。もし、同じ日だとこの方法は使えません。PL/SQLではない方法で論理型みたいなことをやるにはどうやればいいんでしょう?