2010-10-07 112 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