Horsaholic〜競馬中毒〜

競馬場その他での写真と一口出資馬の動向を中心にお届けしています。

相手が先週の吹田特別からの再戦だったら、無事なら何とかなりそうであり続きを読む

めちゃくちゃ雑に貼っていく。
(画像クリックでflickrに遷移します)続きを読む

この調子だと年末くらいまでかかるかな続きを読む

も り あ が っ て ま い り ま し た

帰厩時点で予想した通りの次走で何をやってくれるか楽しみ(野次馬顔続きを読む

しばらく何が起きるかわからないし、内地も涼しくなってきたので出られるうちに北海道出ておいたほうがいいような…続きを読む

受けて受かるならさっさと受けた方が今後の自由度増すんですがね…続きを読む

まあ4週目あたりやろなぁ続きを読む

完全に緩めにかかってるし近いうちに戻ることはなさそう。続きを読む

誰かが同じようなミスをしそうなので備忘。
すごいざっくりしてるけど下記のようなテーブルを定義する
(カラムはすべて文字列型。実際は期間ごとに処理を切り替えるマスタみたいなものと思ってくだせえ)

ID ,(略), StartDate, EndDate
xxxxxx, 〜, 2018/01/01, 2018/08/31
yyyyyy, 〜, 2018/09/01, (null)

このとき、2018/08/31まではID=xxxxxx,2018/09/01になったらID=yyyyyyのレコードが取得されるようにするため

select(略)where(略)
(
(TO_DATE(StartDate,'YYYY/MM/DD') <= SYSDATE AND TO_DATE(EndDate,'YYYY/MM/DD') >= SYSDATE) --SYSDATEが2018/01/01〜2018/08/31の間は2018/01/01版
OR
(TO_DATE(StartDate,'YYYY/MM/DD') <= SYSDATE AND EndDate IS NULL) --2018/09/01の場合2019/01/01版
)

というSQLを書いた。
この場合、2018/08/31にこのプログラムを起動した場合、本来TRUEであってほしい太字の部分がFALSEとなって新旧どちらにも刺さらない事態が発生する。
お察しのとおりTO_DATEで変換したDATEには暗黙のうちに00:00:00の時分秒情報が設定され、
生のSYSDATEは時分秒(+ミリ秒)の情報を持っているので、日付が同一だとSYSDATEが未来とみなされて想定と異なる挙動をしてしまう。
(下記の状況だと
TO_DATE('2018/08/31','YYYY/MM/DD') >= SYSDATE
→'2018/08/31 00:00:00' >= SYSDATE
→'2018/08/31 00:00:00' >= '2018/08/31 00:00:01' --日付変わって1秒で成り立たない

これを回避するためにはTRUNC(SYSDATE)の形にして時分秒情報を削除した状態で比較すること。
(SYSDATE依存の処理を間違うと時限爆弾を埋め込んでのリリースとなってしまうので、比較対象をパッチして当日/前日/翌日の切り替え確認試験はしなければならない)

北海道から帰ってきたのでもう一馬でいいと思うが、一度頼んだ以上仁義は通すのね続きを読む

↑このページのトップヘ