備忘録です()
経緯
今まで、日付で間を取るとき、以下のようなSQLを使っていました。
SELECT * FROM table_name where now() > start_date AND now() < end_date;
これで、start_date < now < end_date
になっているデータを抽出していたのですが、なんせ不等号がわからなくなって、逆に書いてしまって全くヒットしない、なんでじゃーってなることが多かったです。
が、最近BETWEENというとても便利なものを知ったので使ってみました。
使い方
使い方はとっても簡単。
間にはさみたいものを最初に書いて、BETWEEN と ANDで挟むだけ。
というわけで、上で書いたSQLを書き直してみます。
SELECT * FROM table_name where (now() BETWEEN start_date AND end_date);
視覚的にこちらのほうがわかりやすいですね。
今まで知らなかったためにどれだけめんどくさいSQLを書いていたのか・・・
日付がStringの場合
間に挟みたいものか基本的にDATE型かTIMESTAMP型しかできないみたいです。
ので、日付をString型で保管している場合はキャストしないといけないです。
キャストの仕方はこんな感じ
TO_TIMESTAMP('DATE', 'YYYY/MM/DD HH24:MI:SS')
※DATEはStr型の"YYYY/MM/DD HH:mm:ss"って感じ
C#なんかのキャストなんかと似てますね。
コメント