2016-11-21 123 views
3

我在Oracle 12 c數據庫上有一個非常奇怪的行爲。當我做這樣的事情:Oracle 12c:trunc(日期)錯誤導致錯誤數據

select count(*) from fact_table, date_dim, dim_table where 
date_dim.date >= trunc(sysdate)-1 
and fact_table.DATE_ID = date_dim.DATE_ID 
and fact_table.DIM_ID = dim_table.DIM_ID; 

...我得到一定的數字。當我將'> ='更改爲'='時,奇怪的行爲開始 - 只有,然後才能獲得雙倍數額。我檢查了連接條件,但據我所知,如果我過濾日期'> ='昨天而不是日期'='昨天過濾的數量應該更大或相同。

爲什麼會發生這種情況?有沒有可能導致SQL中重複數據的設置?

編輯連接條件兩個連接條件只有1個結果。

+0

如果 「加盟條件1」 啊, r「join cond 2」是'where where date_dim.date = trunc(sysdate)-1'或類似的東西,這種行爲會有道理,不是嗎? –

+0

我不認爲你的結果的有效性可以在不知道'連接'條件是什麼的情況下進行評估。 –

回答

2

一些激烈的分析,我發現,我面臨一個Oracle錯誤後 - >錯誤18461054:TRUNC顯示日期BIND ON分區表給出錯誤的結果

所以這個問題可以用TRUNC或圓形日期occure。

的解決方法爲當前會話是

alter session set "_optimizer_generate_transitive_pred"=false; 

還有一個修補軟件18461054:DATE WITH上綁定分區表TRUNC給出錯誤的結果

希望幫助別人比我:)

最佳,

帕特里克