Plsql 在oracle中,如果所选日期为星期一,如何从日期获取最后一个工作日

Plsql 在oracle中,如果所选日期为星期一,如何从日期获取最后一个工作日,plsql,oracle10g,Plsql,Oracle10g,我想在oracle数据库中创建一个函数。在这种情况下,我希望从所选日期中获取前一天的日期,如果所选日期是星期一,则我希望选择星期五的日期作为前一天的日期,因为这是一周中的最后一个工作日。请尝试以下操作: CREATE OR REPLACE FUNCTION PREVIOUS_WORKING_DAY(pDate IN DATE) RETURN DATE IS strDay_of_week VARCHAR2(50); dtPrev DATE; BEGIN strD

我想在oracle数据库中创建一个函数。在这种情况下,我希望从所选日期中获取前一天的日期,如果所选日期是星期一,则我希望选择星期五的日期作为前一天的日期,因为这是一周中的最后一个工作日。

请尝试以下操作:

CREATE OR REPLACE FUNCTION PREVIOUS_WORKING_DAY(pDate IN DATE)
  RETURN DATE
IS
  strDay_of_week  VARCHAR2(50);
  dtPrev          DATE;
BEGIN
  strDay_of_week := TRIM(TO_CHAR(pDate, 'DAY'));

  CASE strDay_of_week
    WHEN 'MONDAY' THEN
      dtPrev := TRUNC(pDate) - INTERVAL '3' DAY;
    WHEN 'SUNDAY' THEN
      dtPrev := TRUNC(pDate) - INTERVAL '2' DAY;
    ELSE
      dtPrev := TRUNC(pDATE) - INTERVAL '1' DAY;
  END CASE;

  RETURN dtPrev;
END PREVIOUS_WORKING_DAY;

分享和享受。

发布一些您尝试使用的代码,以便获得帮助。修剪strDay_of_week的值可以得到准确的结果result@hiFI-我没有意识到TO_CHAR返回的带有“DAY”格式的字符串后面有空格。你完全正确。非常感谢。不幸的是,我不能回去批准你所做的编辑,尽管如果可以的话我会的。是相关的,我已经发布了一条评论,表示我认为是时候实现这个功能了。无论如何,非常感谢你指出这一点。