いやはや。SQL初心者と言うよりあまり好きじゃないので、いつまでたっても初心者の自分。
夕べから日時の差を求めるのに大変苦労してしまった。
具体的には日時Aと日時Bとの差が10分以上のもの、30分以上のもの、1時間以上のもの
と、言ったデータの検索をしたいのだが、なんせそんな高度なことを自分に求められても。。。ね。
困っちゃいますよね。
ネットで参考になるのを調べ、ひたすら実験。
やっとできましたよ!
まず日時Aと日時BはどちらもDATE型であるとして、
ちなみにこの方法はOracle以外は試していませんので、あらかじめご了承の程。
日時Aと日時Bの差を秒数で求める場合
(日時A - 日時B) * 24 * 60 * 60
とやると時間差を秒数で求められるようである。
調べたところによるとOracleのDATE型同士の加減算は日単位で行われるようなので、結果に対して
1日は24時間
1時間は60分
1分は60秒
を掛けてあげる必要があるようだ。
尚、コンピュータをやっている人なら当たり前であるが、1÷3×3≒1にならないので、結果には小数点以下すごい数字になってしまうことがある。
ので、これを回避するため、小数点以下を四捨五入すると良いかと思う。
ROUND((日時A - 日時B) * 24 * 60 * 60, 0)
てな感じですね。
ちなみに分の場合は24×60を掛ければよく、時間の場合は24を掛ければよい。
と、言うことは分かりますよね。
以上、忘れないよう、自分のための記録でした!
きっとこのブログを読んでくれているほとんどの人には関係ないことだと思うので、読み飛ばしてください。