sql - 如何编写 PLSQL 以返回 SYSDATE 加 8 个工作日?
问题描述
如何编写 PLSQL 语句以返回SYSDATE
加上 8 个工作日?ComputerTIME + 8
个工作日 "ORACLE" 数据库
例如:今天是 08/01/2018 -> 8 个工作日将是 08/13/2018
解决方案
您需要为此使用 PL/SQL 吗?有了SQL查询,就可以得到结果,那为什么还要有PL/SQL呢?当使用 SQL 无法实现预期结果时,需要使用 PL/SQL
尝试以下操作,根据您的要求进行必要的更改。
WITH t
AS ( SELECT SYSDATE + LEVEL AS dt
FROM DUAL
CONNECT BY LEVEL <= 31)
SELECT (TO_CHAR (dt, 'DD-MON-YYYY fmDay', 'NLS_DATE_LANGUAGE = American'))
FROM t
WHERE TO_CHAR (dt, 'Dy') NOT IN ('Sat',
'Sun',
'NLS_DATE_LANGUAGE = American')
AND dt > SYSDATE + 8
或者
WITH t
AS ( SELECT SYSDATE + LEVEL AS dt
FROM DUAL
CONNECT BY LEVEL <= 31)
SELECT MIN (
TO_CHAR (dt, 'DD-MON-YYYY fmDay', 'NLS_DATE_LANGUAGE = American'))
FROM t
WHERE TO_CHAR (dt, 'Dy') NOT IN ('Sat',
'Sun',
'NLS_DATE_LANGUAGE = American')
AND dt > SYSDATE + 8
如果您的任务是使用 PL/SQL,请使用以下命令获得所需的输出。
DECLARE
v_dt VARCHAR2 (32);
BEGIN
WITH t
AS ( SELECT SYSDATE + LEVEL AS dt
FROM DUAL
CONNECT BY LEVEL <= 31)
SELECT MIN (
TO_CHAR (dt,
'DD-MON-YYYY fmDay',
'NLS_DATE_LANGUAGE = American'))
INTO v_dt
FROM t
WHERE TO_CHAR (dt, 'Dy') NOT IN ('Sat',
'Sun',
'NLS_DATE_LANGUAGE = American')
AND dt > SYSDATE + 8;
DBMS_OUTPUT.put_line (v_dt);
RETURN;
END;
推荐阅读
- angular - 角表不工作
- c# - 如何将 json 属性从我的前端分配给 API 中的多个后端模型?
- sql - 在 Spring-Thymeleaf 中查看链接表
- hibernate - HQL - 按动态(别名)属性排序
- node.js - 在 Mongoose 的自定义回调中使用快速响应
- python - 是否必须将分类数据转换为数值数据才能使用解释(Microsoft 包)?
- statistics - 如何估计这个涉及两个二项式随机变量的期望?
- azure-cosmosdb - Gremlin - 获取每个顶点映射到边缘类型的顶点列表
- javascript - JavaScript - 数组切片:基于不同范围的过滤器
- javascript - 在提交隐藏部分之前然后恢复