`SQL`编写判断是否为工作日函数编写

SQL编写判断是否为工作日函数编写

最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫)

我们一起看看(针对ORACLE)

1.声明:

CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /**  *  通过节假日代码获取指定的日期[查找基准日期前/后N自然/工作日的日期] * 注:此函数只适用于节假日表中只保存了节假日日期(非工作日记录)的情况 , * 警告:若没有设置范围内的节假日信息,此函数会计算出错误的返回日期 * _Stand_Date 基准日期, * C_MKT_Code 节假日代码, * N_Interval_Day 间隔天数(大于0向后查找,小于0向前查找,等于0返回基准日期), * C_Type 日期类型 'W'工作日,'D'自然日,'DW'自然日递延至工作日 */ Function GETDAY_HDAY(C_HDay_Code varchar2,D_Stand_Date date,N_Interval_Day int,C_Type varchar2) return Date; END PKG_FUN_GETDAY_HDAY;

2.主体

CREATE OR REPLACE PKG_FUN_GETDAY_HDAY AS Function getDay_HDay(C_HDay_Code varchar2, D_Stand_Date date, N_Interval_Day int, C_Type varchar2) return Date as D_Return Date; /*返回的日期*/ D_Start Date; /*区间开始日期*/ D_End Date; /*区间结束日期*/ D_Tmp Date; N_Count int := 1; C_Hday varchar2(20) := C_HDay_Code; begin D_Return := D_Stand_Date; /*判断参数是否合法*/ if (('W' != C_Type) AND ('D' != C_Type) and ('DW' != C_Type)) then return D_Return; else if (('D' = C_Type) or ('DW' = C_Type)) then D_Return := D_Stand_Date + N_Interval_Day; else /*工作日的推算*/ D_Start := D_Stand_Date; D_End := D_Stand_Date + N_Interval_Day; D_Return := D_End; while (true) loop exit when N_Count = 0; begin if (N_Interval_Day >= 1) then select /*+RESULT_CACHE*/ count(*) into N_Count from T_P_BI_HDAY_SUB a where a.C_HDay_Code = C_Hday and a.D_HDay > D_Start and a.D_HDay <= D_End and a.c_Date_Type = 'H' and a.N_Check_State = 1; if (N_Count > 0) then D_Start := D_End; D_End := D_End + N_Count; D_Return := D_End; else exit; /*退出*/ end if; else /*如果是逆序*/ if (D_Start > D_End) then D_Tmp := D_End; D_End := D_Start; D_Start := D_Tmp; end if; select /*+RESULT_CACHE*/ count(*) into N_Count from T_P_BI_HDAY_SUB a where a.C_HDay_Code = C_Hday and a.D_HDay >= D_Start and a.D_HDay < D_End and a.c_Date_Type = 'H' and a.N_Check_State = 1; if (N_Count > 0) then D_End := D_Start; D_Start := D_End - N_Count; D_Return := D_Start; else exit; /*退出*/ end if; end if; end; end loop; end if; if ('DW' = C_Type) and (N_Interval_Day>0) then N_Count:=1; while (true) loop exit when N_Count = 0; select /*+RESULT_CACHE*/ count(*) into N_Count from T_P_BI_HDAY_SUB a where a.C_HDay_Code = C_Hday and a.D_HDay = D_Return and a.c_Date_Type = 'H' and a.N_Check_State = 1; if N_Count!=0 then D_Return:=D_Return+1; end if; end loop; end if; end if; return D_Return; end; END PKG_FUN_GETDAY_HDAY;

3.检验

CN:基准日期(以哪个国家进行注明)

DATE ‘2023-10-08’:你要检验的日期

-1:代表去取前一日日期

‘W’:只取前面‘-1’也就是前一日的工作日

SELECT PKG_FUN_GETDAY_HDAY.GETDAY_HDAY('CN', DATE '2023-10-08', -1, 'W')   AS TEST_DATA  FROM  TEST_TABLE a  WHERE  ROWNUM<2;

运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

drawio简介以及下载安装

drawio简介以及下载安装 drawio是一款非常强大的开源在线的流程图编辑器&#xff0c;支持绘制各种形式的图表&#xff0c;提供了 Web端与客户端支持&#xff0c;同时也支持多种资源类型的导出。 访问网址&#xff1a;draw.io或者直接使用app.diagrams.net直接打开可以使用在线版…

STM32 裸机编程 03

MCU 启动和向量表 当 STM32F429 MCU 启动时&#xff0c;它会从 flash 存储区最前面的位置读取一个叫作“向量表”的东西。“向量表”的概念所有 ARM MCU 都通用&#xff0c;它是一个包含 32 位中断处理程序地址的数组。对于所有 ARM MCU&#xff0c;向量表前 16 个地址由 ARM …

VSCode搭建ESP32 ESP-IDF开发环境-Windows

陈拓 2023/10/09-2023/10/14 1. 安装Windows系统下的ESP32 ESP-IDF开发环境 见《Windows系统安装ESP32 ESP-IDF开发环境》 Windows系统安装ESP32 ESP-IDF开发环境-CSDN博客Windows系统安装ESP32 ESP-IDF开发环境。https://blog.csdn.net/chentuo2000/article/details/1339225…

迅为RK3588开发板使用RKNN-Toolkit-lite2运行测试程序

1 首先也需要部署运行环境&#xff0c;将库文件放入 RK3588 开发板上&#xff0c;我们将网盘资料“iTOP-3588 开发 板 \02_ 【 iTOP-RK3588 开 发 板 】 开 发 资 料 \12_NPU 使 用 配 套 资 料 \05_Linux_librknn_api\librknn_api\aarch64”路径下的文件通过U盘拷贝到开发板的…

AI AIgents时代-(五.)Autogen

由微软开发的 Autogen 是一个新的 Agents 项目&#xff0c;刚一上线就登上GitHub热榜&#xff0c;狂揽11k星✨✨✨ 项目地址&#xff1a;https://github.com/microsoft/autogen Autogen 允许你根据需要创建任意数量的Agents&#xff0c;并让它们协同工作以执行任务。它的独特之…

stable-diffusion-webui sdxl模型代码分析

采样器这块基本都是用的k-diffusion&#xff0c;模型用的是stability的原生项目generative-models中的sgm&#xff0c;这点和fooocus不同&#xff0c;fooocus底层依赖comfyui中的models&#xff0c;comfy是用load_state_dict的方式解析的&#xff0c;用的load_checkpoint_guess…

实时精准 自我防护 | 开源网安RASP平台能力获客户认可!

近日&#xff0c;开源网安收到了一封来自华润数科的感谢信&#xff0c;表达了对开源网安团队在网络安全工作中给予大力支持的衷心感谢。开源网安十分注重客户的需求和信任&#xff0c;客户的满意和认可是开源网安最大的追求。 在助力华润数科网络安全工作开展过程中&#xff0c…

nextjs-一个基于React的全栈框架

一、nextjs基本介绍 Next.js是一个基于React的轻量级框架&#xff0c;用于构建React应用程序。它在React的基础上提供了一些增强功能&#xff0c;包括服务器渲染&#xff08;SSR&#xff09;、静态生成&#xff08;SSG&#xff09;、路由等。Next.js的目标是简化React应用程序…

十八、字符串(1)

本章概要 字符串的不可变 的重载与 StringBuilder 意外递归字符串操作 字符串操作毫无疑问是计算机程序设计中最常见的行为之一。 在 Java 大展拳脚的 Web 系统中更是如此。在本章中&#xff0c;我们将深入学习在 Java 语言中应用最广泛的 String 类&#xff0c;并研究与之相关…

pymysql连接Mariadb/Mysql出现错误(配置正确情况下)解决办法

场景&#xff1a;在kali中使用python中pymysql对Mariadb进行连接&#xff0c;在整个过程中配置全部正确&#xff0c;但是就是无法进行连接&#xff0c;提示结果如下&#xff1a; Access denied for user rootlocalhost解决办法&#xff1a;进入数据库中&#xff0c;将默认密码…

实验室烧杯可以用超声波清洗机吗

实验室烧杯可以用超声波清洗机吗&#xff1f;答案是可以的&#xff01;超声波清洗机不仅可以清洗实验烧杯&#xff0c;还可以用于清洗实验室中的试管、培养皿、移液管、载玻片、容量瓶、锥形瓶等各类实验器皿。在实验中&#xff0c;如果烧杯清洁不到位&#xff0c;会使得实验数…

分布式存储 vs. 全闪集中式存储:金融数据仓库场景下的性能对比

作者&#xff1a;深耕行业的 SmartX 金融团队 张德敏 近年来随着金融行业的高速发展&#xff0c;经营决策者及监管机构对信息时效性的要求越来越高&#xff0c;科技部门面临诸多挑战。例如&#xff0c;不少金融机构使用数仓业务系统&#xff0c;为公司高层提供日常经营报表&am…

CSV文件新增数据知多少

CSV文件编辑数据时 一、如果数据的长度不超过11位&#xff0c;直接正常输入 二、如果数据的长度大于等于11位&#xff0c;新增数据时&#xff0c;将列格式改为文本&#xff0c;并且输入数字&#xff0c;数字使用文本格式保存 如果数字长度超过11位&#xff0c;则展示为E科学…

seq“ 和 “time“ 字段

在RTP&#xff08;Real-time Transport Protocol&#xff09;报文中&#xff0c;"seq" 和 "time" 字段分别表示以下内容&#xff1a; 1. **Seq&#xff08;Sequence Number&#xff09;字段**&#xff1a;Seq字段是RTP头部中的一个16位字段&#xff0c;用…

​iOS上架App Store的全攻略

第一步&#xff1a;申请开发者账号 在开始将应用上架到App Store之前&#xff0c;你需要申请一个开发者账号。 1.1 打开苹果开发者中心网站&#xff1a;Apple Developer 1.2 使用Apple ID和密码登录&#xff08;如果没有账号则需要注册&#xff09;&#xff0c;要确保使用与公…

瑞芯微RKNN开发·yolov5

官方预训练模型转换 下载yolov5-v6.0分支源码解压到本地&#xff0c;并配置基础运行环境。下载官方预训练模型 yolov5n.ptyolov5s.ptyolov5m.pt… 进入yolov5-6.0目录下&#xff0c;新建文件夹weights&#xff0c;并将步骤2中下载的权重文件放进去。修改models/yolo.py文件 …

提高编程效率-Vscode实用指南

您是否知道全球73%的开发人员依赖同一个代码编辑器&#xff1f; 是的&#xff0c;2023 年 Stack Overflow 开发者调查结果已出炉&#xff0c;Visual Studio Code 迄今为止再次排名第一最常用的开发环境。 “Visual Studio Code 仍然是所有开发人员的首选 IDE&#xff0c;与专业…

eBay类目限制要多久?eBay促销活动有哪些?-站斧浏览器

eBay类目限制要多久&#xff1f; 1、eBay对不同类目的商品有不同的限制和要求。一些类目可能对新卖家有一定的限制&#xff0c;限制他们在该类目下销售商品的数量或需要满足某些条件才能进行销售。 2、对于新卖家的限制通常是在一定时间内&#xff0c;比如30天或90天&#xf…

(转)STR 内核做了什么

参考这篇文章&#xff1a; Linux电源管理(6)_Generic PM之Suspend功能 写的很清晰

微信小程序一键获取位置

需求 有个表单需要一键获取对应位置 并显示出来效果如下&#xff1a; 点击一键获取获取对应位置 显示在 picker 默认选中 前端 代码如下: <view class"box_7 {{ showChange1? change-style: }}"><view class"box_11"><view class"…