2015-07-03 36 views
-1

我正在將一些Oracle SQL(從陳舊的SAS環境)查詢轉換爲PostgreSQL。在我弄清楚PostgreSQL與DATEPART()的相同之處以及它的工作原理之前,我需要找出Oracle查詢正在做什麼來更好地理解它。在select語句中,我有兩部分查詢看起來非常相似。帶一個參數的SAS/Oracle SQL DATEPART()

SELECT DISTINCT 
/*...*/ 
DHMS(DATEPART(a.process_date),0,0,0) FORMAT datetime20. AS Pic_Proc_Dt, 
/*...*/ 
DHMS(DATEPART(b.process_date),0,0,0) FORMAT datetime20. AS RESP_Proc_Dt, 
/*...*/ 

特別是,我不明白Oracle只使用一個參數就可以使用DATEPART調用。我可以在網上找到的所有資源都表示,您需要在DATEPART中使用兩個參數才能使其工作,但這只是一個,而且此代碼已運行近8年。

因爲我無權查看其中的Oracle數據庫和數據,所以我無法在相關表上進行任何小選擇,以查看該列中的數據究竟是什麼樣子。但是,除此之外,DATEPART函數應該仍然有兩個參數。

如果只有一個參數/參數發送給DATEPART(arg)會返回什麼?

謝謝。

+0

我甚至不知道Oracle有'datepart'函數......當我嘗試運行它時,它說'無效標識符'。 – sstan

+0

@sstan它可能是SAS proc sql函數嗎?它以任何方式引用Oracle數據庫,我不明白。 –

+0

我不知道。你能否使用與上述查詢相同的憑據直接連接到數據庫,可能使用'SQL * PLUS'?如果是這樣,你可以嘗試運行'從dual'選擇datepart(sysdate),看看你是否真的得到了結果,或者至少有一個不同的錯誤? – sstan

回答