我有一个接受两个日期的SQL存储过程,但是当我在打开的查询中发送它们时,由于某些原因,Oracle不喜欢日期格式。SQL存储过程转换日期参数
如何使用存储过程中的dd-mm-yyyy
将日期格式更改为YYYY-MM-DD
,然后再使用它发送。
e.g SET @startdate = CONVERT
我有一个接受两个日期的SQL存储过程,但是当我在打开的查询中发送它们时,由于某些原因,Oracle不喜欢日期格式。SQL存储过程转换日期参数
如何使用存储过程中的dd-mm-yyyy
将日期格式更改为YYYY-MM-DD
,然后再使用它发送。
e.g SET @startdate = CONVERT
使用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');
您可以使用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');
如果Oracle不接受这种格式,这对现有的DATE值不是问题。 – 2010-10-07 01:55:21
TO_DATE功能不适用于“YYYY-MM-DD”格式。这就是为什么尝试使用“TO_CHAR”而不是“TO_DATE”。 – ppshein 2010-10-07 02:03:48
“'YYYY-MM-DD'”对于TO_DATE和TO_CHAR都是完美的。这取决于你在日期和字符串之间转换的方向。 – 2010-10-07 04:12:24