2014-12-03 188 views
2

我有這個SQL查詢工作正常,但想將其轉換成某種postgresql或netezza等效查詢。這裏是我的查詢:如何使用postgresql/netezza從日期時間中減去幾天或幾個月

SELECT name, location, Date FROM myTable WHERE [Date] < DateAdd(hh, 48, [shipDate] 

等查詢

SELECT name, location, Date FROM myTable WHERE [Date] < DateAdd(d, 90, [shipDate] 
+1

不要使用[括號]。他們是微軟的延伸。 – wildplasser 2014-12-04 01:18:20

回答

2

致Netezza公司最容易做的事情是使用間隔計算:

SELECT name, location, Date FROM myTable WHERE Date < shipDate + interval '48 hours'; 
SELECT name, location, Date FROM myTable WHERE Date < shipDate + interval '2 days'; 
SELECT name, location, Date FROM myTable WHERE Date < shipDate + interval '90 days'; 

,如果你願意,你也可以使用ADD_MONTHS做月份計算,瞭解月份的不同長度。

SELECT name, location, Date FROM myTable WHERE Date < add_months(shipdate, 3); 
+2

PostgreSQL中沒有add_months()函數。 – 2014-12-04 08:16:33

+1

我會編輯以澄清我的回覆是針對「Postgres或netezza」的netezza部分 – ScottMcG 2014-12-04 20:14:56

+0

警告一句話:可以使用一個月份組件定義間隔,但是應該避免這樣做,因爲它會引入微妙的日期數學錯誤。您還可以使用整數算術添加日期,但這又會引入細微的錯誤。總是在月份和年份中使用add_months單位,以及天,小時,分鐘和秒的時間間隔。 AFAICT不支持毫秒日期數學。 – qSlug 2014-12-12 05:48:21

相關問題