深深地凝視我的水晶球......
如果cap_from_dte
和cap_to_dte
是date
類型的列,那麼他們將有一天分量和時間分量。即使您的會話未設置爲顯示時間組件,它也會在那裏。您正在進行平等比較,因此:ll_curr_from_date
和:ll_curr_to_date
綁定變量需要完全匹配表中的數據。我猜想你的SQL * Plus會話被設置爲默認情況下不會顯示date
值的時間部分,並且導致您爲綁定變量傳遞不正確的值。
假設您的綁定變量是日午夜(默認)的時間成分,你可以使用不平等通常更容易優化器上的日期列使用索引
Select Max (seq_num)
From t_cap_history
Where pr_id_sak = :il_pr_id_sak
And re_unique_id=:locw_re_unique_id
And period_dte = :ll_period_date
AND cap_from_dte >= :ll_curr_from_date
AND cap_from_dte < :ll_curr_from_date + 1
And cap_to_dte >= :ll_curr_to_date
And cap_to_dte < :ll_curr_to_date + 1
And capitation_cde = :ls_cap_cde
,或者你可以使用trunc
功能的時間組件設置爲午夜
Select Max (seq_num)
From t_cap_history
Where pr_id_sak = :il_pr_id_sak
And re_unique_id=:locw_re_unique_id
And period_dte = :ll_period_date
AND trunc(cap_from_dte) = :ll_curr_from_date
And trunc(cap_to_dte) = :ll_curr_to_date
And capitation_cde = :ls_cap_cde
你說過忽略第6或7行會導致它返回結果。 A)你的意思是,而不是或? B)鑑於這些日期,你想要做一個完全匹配,或者你想要在一個範圍內的日期?請給出一個省略其中一行的數據示例 – Foon
「cap_from_dte」和「cap_to_dte」列使用哪種數據類型? –