2017-09-19 34 views
0

我張貼我的查詢的一部分,這是在Oracle和它如下:轉換Oracle查詢的到PostgreSQL

cast(from_tz(cast((Select max(d.startdate) from Public.result_slalom d 
       where d.eventid = a.eventid 
       and d.modifydate = (Select max(e.modifydate) from result_slalom e 
       where e.eventid = d.eventid)) as timestamp), 'Asia/Calcutta') at Time Zone 'Europe/Berlin' as date) as OpenLastTime, 

我想使用PostgreSQL運行此查詢。所以我寫了一個查詢,看起來像這樣對PostgreSQL:

(Select Cast(to_timestamp(max(d.startdate)) 
         from Public.result_slalom d 
       where d.eventid = a.eventid 
       and d.modifydate = (Select max(e.modifydate) from Public.result_slalom e 
       where e.eventid = d.eventid) as timestamp, 'Asia/Calcutta') at Time Zone 'Europe/Berlin' as date) as OpenLastTime, 

我在這裏和那裏得到了一些錯誤,我相信都涉及到一些支架的問題。或者由於e.modifydate的第二個select子句中的關鍵字'timestamp'。

任何幫助將不勝感激。提前致謝。 :)

+0

因爲'了'沒有定義這不會在任何數據庫。我建議你簡化你的實際查詢,然後重新提出問題或問問另一個問題。 –

+0

你得到什麼「在這裏和那裏的幾個錯誤」?對不起,但我的水晶球壞了。 – waka

回答

0

未來,請嘗試包括一個完全可重複的示例,我們可以實際運行。我做了an example fiddle that shows how you could do this

from_tz不是Postgres函數。此外,Postgres中的date類型沒有時間或時區組件 - 僅僅是年月日。您的startdatemodifydate列將需要爲timestamp

這裏是我的轉換:

select ((Select max(d.startdate) from result_slalom d 
      where d.eventid = a.eventid and 
      d.modifydate = (Select max(e.modifydate) from result_slalom e 
      where e.eventid = d.eventid)) at time zone 'Asia/Calcutta') 
     at Time Zone 'Europe/Berlin' as OpenLastTime 
from a;