问题描述
如何根据用户的输入计算日期? 也就是说,根据用户输入的内容,将在当前日期上添加 3 个月或 5 等。
我尝试向日期选择器添加计算:
我还使用以下 pl/sql 函数体为此日期添加了计算,但它不起作用。
DECLARE
sub_date DATE default null;
BEGIN
if :P75_THESISTYPE =1
then
sub_date := :P75_SUBMISSION_DATE +6;
else
sub_date := :P75_SUBMISSION_DATE +3;
END IF;
return sub_date;
end;
解决方法
页面项目被视为 VARCHAR2,因此您需要在对它们执行算术运算之前将它们转换为日期:
DECLARE
sub_date DATE default null;
BEGIN
if :P75_THESISTYPE =1
then
sub_date := TO_DATE(:P75_SUBMISSION_DATE) +6;
else
sub_date := TO_DATE(:P75_SUBMISSION_DATE) +3;
END IF;
return sub_date;
end;
/
,
@TonyAndrews 有正确的过程,但是当他按照您的初始陈述进行操作时,它不会给出预期的结果。向数据添加一个整数会增加天数而不是月数。你需要的是 ADD_Months 函数;所以:
DECLARE
sub_date DATE default null;
BEGIN
if :P75_THESISTYPE =1
then
sub_date := add_months(to_date(:P75_SUBMISSION_DATE),6);
else
sub_date := add_months(to_date(:P75_SUBMISSION_DATE),3);
end if
return sub_date;
end;
/
当然,以上假设您的变量格式与您的 nls_data_format 匹配。通常充其量只是一个危险的假设,