2

このコードが機能しない理由がわかりません。それは少し後ろ向きで、私を混乱させるかもしれません。

SELECT * FROM 
(  
 SELECT   
 TO_CHAR(FTPRITIN.start_date, 'DD-MON-YY') start_date,
 TO_CHAR(FTPRITIN.end_date, 'DD-MON-YY') end_date 
 FROM ftpritin 
)
WHERE :VARIABLE BETWEEN start_date AND end_date

私も試してみました

SELECT * FROM 
(  
 SELECT   
 TO_CHAR(FTPRITIN.start_date, 'DD-MON-YY') start_date,
 TO_CHAR(FTPRITIN.end_date, 'DD-MON-YY') end_date 
 FROM ftpritin 
)
WHERE start_date > :VARIABLE AND end_date < :VARIABLE

しかし、うまくいかないようです。クエリは実行されますが、範囲外のデータが完全に取得されます。

必要なのは、変数が start_date と end_date の間にあるデータ行を取得することです。何か案は?どんな助けでも大歓迎です。

答え

参考までに - なぜこんなに簡単な問題が難しいのかと思っている方 - または同じような問題を抱えている方...

フィールドはTIMESTAMPであり、日付フィールドではありませんでした。実行してこれを理解しました

DESC table_name

それから私はそれを修正するために簡単な substr to_date をしました

to_date(substr(start_date, 1, 9))

これにより、日付でフィルタリングできました

WHERE to_date(substr(start_date, 1, 9)) <= to_date(:VARIABLE, 'DD-MON-YY')...

みんな助けてくれてありがとう。

(担当者が 10 人未満なので、自分の投稿に答えることができません)

4

1 に答える 1