2010-10-07 74 views
2

我有一個接受兩個日期的SQL存儲過程,但是當我在打開的查詢中發送它們時,由於某些原因,Oracle不喜歡日期格式。SQL存儲過程轉換日期參數

如何使用存儲過程中的dd-mm-yyyy將日期格式更改爲YYYY-MM-DD,然後再使用它發送。

e.g SET @startdate = CONVERT

回答

4

使用TO_DATE function爲一個字符串值轉換爲Oracle日期數據類型。

接受格式爲YYYY-MM-DD日期字符串:

v_start_date DATE := TO_DATE(v_date_string, 'YYYY-MM-DD'); 

接受格式爲DD-MM-YYYY日期字符串:

v_start_date DATE := TO_DATE(v_date_string, 'DD-MM-YYYY'); 
-1

您可以使用TO_CHAR Oracle的功能。

/*retrieve from query*/ 
select TO_CHAR(reg_date,'YYYY-MM-DD') REGDATE from Users_TBL 

/*Assign to variable*/ 
regDate := TO_CHAR(reg_date,'YYYY-MM-DD'); 
+0

如果Oracle不接受這種格式,這對現有的DATE值不是問題。 – 2010-10-07 01:55:21

+0

TO_DATE功能不適用於「YYYY-MM-DD」格式。這就是爲什麼嘗試使用「TO_CHAR」而不是「TO_DATE」。 – ppshein 2010-10-07 02:03:48

+2

「'YYYY-MM-DD'」對於TO_DATE和TO_CHAR都是完美的。這取決於你在日期和字符串之間轉換的方向。 – 2010-10-07 04:12:24