2013-02-12 56 views
1

Postgres在處理範圍一些很酷的經營範圍: http://www.postgresql.org/docs/devel/static/functions-range.html的Postgres/SQL ::摘要「不在範圍內」操作

...但似乎並不有什麼處理的「不」是範圍。例如,@>運算符表示「包含元素」或「包含範圍」。但同樣有用的將是!@>運營商,似乎並不存在。

如果我想說「查詢日期不在範圍內」,除了使用條件表達式之外是否還有其他解決方案?我正在使用SQL :: Abstract,它不支持不使用文字SQL的表達式,我想避免這種情況。

+2

'not(x @> b)'? – 2013-02-12 22:53:49

+0

這是一個很好的解決方案,但我猜我的問題的關鍵是找到一些將很好地與SQL :: Abstract – Ryan 2013-02-12 23:06:24

回答

0

我會建議使用NOT BETWEEN日期和日期。

對不起,您仍可能最終使用SQL文字。

+0

我會說這可能會是最好的答案,但我希望有一種方法,我可以利用這些新的運營商! – Ryan 2013-02-13 21:31:43

+0

我很高興這很有幫助。幾年前,我是SQL :: Abstract的粉絲,但現在已經在我的項目中用SQL :: Interp(通過DBIx :: Simple集成)完全替代了它。我發現它更容易閱讀和書寫,並且它沒有任何複雜的表達方式。 – 2013-02-13 22:10:12

+1

我得檢查一下。不幸的是,我在SQL :: Abstract中很深,但也許這是一個跡象表明是時候切換了。 – Ryan 2013-02-14 00:55:10