首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有Oracle内置函数来转换日期格式,以及如何将周末排除在逻辑之外?

是否有Oracle内置函数来转换日期格式,以及如何将周末排除在逻辑之外?
EN

Stack Overflow用户
提问于 2020-06-08 08:53:48
回答 1查看 32关注 0票数 0

下面的代码给出了当前审核日期和下一个审核日期的输出。在这里,当前的审查日期确定为今天的日期。我想把它保留为用户定义的变量。我尝试使用-> ReviewDate = &enter_date;,但是无论我在对话框中输入哪种格式,它都会给我一个错误(我尝试了08-06-2020、06-08-2020、08-6月-2020,等等)。甲骨文中是否有任何内置函数,它将把输入的值转换为oracle将理解的正确的系统日期?此外,如果我想将任何周末排除在我当前的逻辑之外,代码应该是什么?在这里,下一个审查日期设置为从当前审核日期起6个月,但我希望我的代码将周末排除在此之外。

谢谢!!

代码语言:javascript
运行
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 09:04:00

日期文字的ANSI格式是日期'YYYY-NN-DD‘所以:

代码语言:javascript
运行
复制
ReviewDate := DATE '2020-06-08';

为了避免周末,您必须检查add_months函数返回的一周的日期,然后相应地增加日期。具有'D‘格式的to_char将返回一周中的数字1-7,所以如下所示:

代码语言:javascript
运行
复制
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设置)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62258384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档