下面的代码给出了当前审核日期和下一个审核日期的输出。在这里,当前的审查日期确定为今天的日期。我想把它保留为用户定义的变量。我尝试使用-> ReviewDate = &enter_date;,但是无论我在对话框中输入哪种格式,它都会给我一个错误(我尝试了08-06-2020、06-08-2020、08-6月-2020,等等)。甲骨文中是否有任何内置函数,它将把输入的值转换为oracle将理解的正确的系统日期?此外,如果我想将任何周末排除在我当前的逻辑之外,代码应该是什么?在这里,下一个审查日期设置为从当前审核日期起6个月,但我希望我的代码将周末排除在此之外。
谢谢!!
SET SERVEROUTPUT ON;
DECLARE
ReviewDate workforce.Jdate%TYPE;
BEGIN
ReviewDate := '08-06-2020';
ReviewDate_New := add_months(ReviewDate, 6);
dbms_output.put_line('Last Review Date: ' || '08-06-2020');
dbms_output.put_line('Next Review Date: ' || ReviewDate_New);
END;发布于 2020-06-08 09:04:00
日期文字的ANSI格式是日期'YYYY-NN-DD‘所以:
ReviewDate := DATE '2020-06-08';为了避免周末,您必须检查add_months函数返回的一周的日期,然后相应地增加日期。具有'D‘格式的to_char将返回一周中的数字1-7,所以如下所示:
CASE TO_CHAR(ReviewDate_New, 'D')
WHEN 6 THEN
ReviewDate_New := ReviewDate_New + 2;
WHEN 7 THEN
ReviewDate_New := ReviewDate_New + 1;
ELSE
NULL; -- Do nothing
END CASE;这假设周六和周日是数据库中的第6天和第7天(这取决于NLS设置)。
https://stackoverflow.com/questions/62258384
复制相似问题