1

好的,我得到了我的問題的第一部分回答,所以這裏是第二部分。 :-)在PLSQL查詢,我有一個看起來像這樣的標準:在Oracle查詢中的函數調用中做日期時間數學

where Doc3.clinicalDate >= ml.convert_date_to_id(:DateBegin) 
    and Doc3.clinicalDate < ml.convert_date_to_id(:DateEnd) 

現在,我不想使用:DateEnd本身 - 我想加1的日子,所以,當它比較日期時間午夜,我得到的下一個天的午夜。不幸的是,當我做

where Doc3.clinicalDate >= ml.convert_date_to_id(:DateBegin) 
    and Doc3.clinicalDate < ml.convert_date_to_id(:DateEnd + 1) 

我得到 「ORA-06553:PLS-306:錯號碼或類型的呼叫'CONVERT_DATE_TO_ID的論點」。 「:DateEnd +間隔 '1' 天」 給我 「ORA-30081:用於日期時間/間隔算術無效的數據類型」(其中:DateEnd綁定到31-MAY-2012)。如果我做「convert_date_to_id(add_months(:DateEnd,1))」,它工作正常。有什麼想法嗎?謝謝。

ETA:我應該說明這是一個SSRS 2008 R2項目,並且DateBeginDateEnd在報告參數中定義爲DateTime參數。我當前的解決方法涉及將:DateEnd查詢參數設置爲等於@DateEnd報告參數+ 1,但我擔心有一天我會忘記正確記錄此問題,並將任何試圖維護此報告的人混淆(並且可能是我)。我想通過字符串參數,如之前建議。

+0

哪些數據類型是'clinicalDate',以及'convert_date_to_id'的參數和返回類型是什麼? –

+0

函數Convert_Date_to_ID(thedate IN Date)RETURN NUMERIC AS BEGIN RETURN(thedate-to_date('01/01/1960','mm/dd/yyyy'))* 1000000 * 86400; END; – SarekOfVulcan

回答

2

我在想,這些參數是日期時間是問題的根源。微軟的DateTime數據類型是比甲骨文的方式更精細,它支持小數秒和Oracle的日期格式不會(但甲骨文TIMESTAMP一樣)。

由於ADD_MONTHS只是返回它在DATE數據類型中傳遞的任何內容(即傳遞TIMESTAMP成爲DATE)。因此,也許你可以轉換參數,並添加天那道:

where Doc3.clinicalDate >= ml.convert_date_to_id(:DateBegin) 
    and Doc3.clinicalDate < ml.convert_date_to_id(CAST(:DateEnd as DATE)+1) 

或者,忘記在參數轉換和日期計算和從第二clinicalDate減去一天:

where Doc3.clinicalDate >= ml.convert_date_to_id(:DateBegin) 
    and Doc3.clinicalDate - 1 < ml.convert_date_to_id(:DateEnd) 
+0

第二個將無法工作 - clinicalDate是一個奇怪的屁股timestampish的東西,其中包括與編輯工作站相關的ID。不過,我會檢查你的第一個建議。謝謝! – SarekOfVulcan

+0

是的,這工作,它把轉換的權利,我想要的地方 - 越多的地方檢查,越有機會我會錯過一個。 :-) – SarekOfVulcan

0

使用to_date來轉換該值。例如:

select &date + 1 from dual 

告知to_date('29052012','ddmmyyyy')作品細

告知'29-may-2012'給出ORA-01722: invalid number

2

假設ml.convert_date_to_id需要DATE作爲輸入參數,而不是表示日期一個VARCHAR2,並且假設:DateEnd綁定變量是VARCHAR2,您需要類似

ml.convert_date_to_id(to_date(:DateEnd, 'DD-MON-YYYY') + 1) 

ml.convert_date_to_id(to_date(:DateEnd, 'DD-MON-YYYY') + interval '1' day) 
+0

我不認爲它是一個varchar,儘管我不確定這裏的綁定是如何工作的 - 當我在SSRS中使用該查詢時,數據集參數綁定到定義爲日期的報表參數。 – SarekOfVulcan