Q
Problem solve Get help with specific problems with your technologies, process and projects.

# Calculating approval date, part 3: Code for a faster day counter

How can I write a function to calculate the approval date which is n days (variable) from a given date, excluding...

Thursdays and Fridays?

The following is part 3 of Frank's response. Click for part 2, A faster day counter.

### Code for a faster day counter

``` CREATE OR REPLACE PACKAGE pk_approval AS FUNCTION approval_dt ( in_event_dt IN DATE, -- Starting date in_day_cnt IN NUMBER -- Number of "work" days ) RETURN DATE; FUNCTION approval_n ( in_dow_val IN PLS_INTEGER, -- 1=Sun, ... 7=Sat in_day_cnt IN PLS_INTEGER -- 0-5 ) RETURN PLS_INTEGER; PROCEDURE set_array; END pk_approval;
```

### Package Body

``` CREATE OR REPLACE PACKAGE BODY pk_approval AS TYPE num_array IS TABLE OF NUMBER; -- Declare an instance of type num_array -- (to be initialized in set_array) off_array num_array; -- ***************************** -- ** a p p r o v a l _ d t ** -- ***************************** FUNCTION approval_dt ( in_event_dt IN DATE, -- Starting date in_day_cnt IN NUMBER -- Number of "work" days ) RETURN DATE IS day_cnt PLS_INTEGER := in_day_cnt; day_5_cnt PLS_INTEGER; -- day_cnt, mod 5 dow_val PLS_INTEGER; -- 1=Sun, 2=Mon, ..., 7=Sat off_cnt PLS_INTEGER; -- # of actual days in future BEGIN -- "Normalize" day_cnt (>= 0) IF day_cnt < 0 THEN day_cnt := 0; END IF; -- Compute day_5_cnt := MOD (day_cnt, 5); off_cnt := ((day_cnt - day_5_cnt) / 5) * 7; dow_val := TO_NUMBER ( TO_CHAR ( in_event_dt, 'D' ) ); off_cnt := off_cnt + approval_n (dow_val, day_5_cnt); RETURN in_event_dt + off_cnt; END approval_dt; -- *************************** -- ** a p p r o v a l _ n ** -- *************************** -- approval_n returns the number of actual days you -- have to wait for in_day_cnt work days starting -- on weekday in_dow_val. -- For example, approval_n (1, 4) returns 6, -- because starting with Sunday (day 1) the 4th -- workday is 6 actual days away. FUNCTION approval_n ( in_dow_val IN PLS_INTEGER, -- 1=Sun, ... 7=Sat in_day_cnt IN PLS_INTEGER -- 0-5 ) RETURN PLS_INTEGER IS sub_val PLS_INTEGER -- subscript in off_array := in_dow_val + (7 * in_day_cnt); BEGIN RETURN off_array (sub_val); END approval_n; -- ************************* -- ** s e t _ a r r a y ** -- ************************* -- set_array initializes the package variable off_array, -- used in approval_n. PROCEDURE set_array IS BEGIN off_array := num_array ( -- Sun Mon Tue Wed Thu Fri Sat 0, 0, 0, 0, 2, 1, 0, -- 0 days later 1, 1, 1, 3, 3, 2, 1, -- 1 2, 2, 4, 4, 4, 3, 2, -- 2 3, 5, 5, 5, 5, 4, 3, -- 3 6, 6, 6, 6, 6, 5, 4 -- 4 ); END set_array; -- The following part of the package is executed once -- per session, when the package is first loaded. BEGIN set_array; END pk_approval;
```

This was last published in September 2003

#### Have a question for an expert?

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### GDPR data protection edicts make good data governance a must

The European Union's new GDPR law puts the onus on companies to ensure that their data governance and management practices enable...

• ### GDPR rules can spur broader steps to protect sensitive data

Companies need to make compliance with GDPR's requirements on managing personal data a priority, but they should also work to ...

• ### Data integrity protection spurs greater security spending

As hacking, ransomware and malware attacks mount, companies place big data protection and integrity among the primary reasons for...

• ### Cambridge Analytica-Facebook case shows need for ethical data mining

Ethical data collection practices are becoming even more important, as cases like Cambridge Analytica's misuse of Facebook data ...

• ### Rethinking analytics processes spurs enterprise innovation

By taking a fresh look at the makeup of their analytics organizations, enterprises can innovate their business models and take ...

• ### Diversified data sets for analytics deliver top results

Analytics teams should focus on data diversity to ensure that their projects deliver the most meaningful insights -- but they ...

## SearchSAP

• ### SAP indirect access debate tackled in new licensing model

SAP wants to resolve the indirect-access issue with a new, document-based licensing model. Analysts think customers will be happy...

• ### Pros and cons of SAP Cloud Platform integration tools

While SAP offerings are often best for cloud-to-cloud and cloud-to-ground integration, sometimes, it's better to look elsewhere. ...

• ### Supply chain risk assessment a major focus of SAP Ariba

SAP Ariba's Supplier Risk helps companies assess their suppliers in a number of risk categories, but building a responsible ...

## SearchSQLServer

• ### Why running SQL Server on Docker is no longer frowned upon

Microsoft now lets SQL Server databases run in Docker containers, a capability that depends on using volumes to store data in a ...

• ### What the Microsoft GDPR compliance toolkit offers for SQL Server

The set of GDPR compliance tools that Microsoft offers for SQL Server is designed to make it easier for users of the database ...

• ### How much do you know about the components of SQL Server?

From SQL Server Machine Learning Services to the SQL Server Operating System, there's a lot to know about SQL Server. Test your ...

## TheServerSide.com

• ### How JPA and Hibernate simplify data persistence

JPA is the Java standard for data persistence, especially for relational systems. Here, we explore how Hibernate and JPA work ...

• ### Let's talk bitcoin and building blockchain apps fast with Hyperledger

If you're thinking about building blockchain apps, you're probably looking for the right tools and technologies. Hyperledger ...

• ### The best web programming languages for development

Many technologies have emerged to facilitate browser-based development. Here, we look at those technologies in an effort to ...

## SearchDataCenter

• ### Guide to buying server performance monitoring software

Integration, storage and vendor support all affect whether a performance monitoring tool is right for an organization. Mull over ...

• ### How IBM's data science team quickens users' AI projects

In this Q&A, IBM's Seth Dobrin discusses the rising user interest in machine learning and AI projects and the help inexperienced ...

• ### IBM blockchain technology spotlights mainframes

IBM's blockchain offerings aim to ease enterprise IT concerns by combining Z system mainframe hardware with industry-specific ...

## SearchContentManagement

• ### How a digital transformation process helped curb reliance on paper

By moving on from paper, the North Carolina Court System and the Texas Animal Health Commission were able to accommodate ...

• ### Intelligent information management is ready for AI, blockchain

A panel discussion at AIIM 2018 looked at how AI, cloud and blockchain will disrupt the intelligent information management space.

• ### SharePoint 2019 on premises the talk of SharePoint Fest D.C.

This episode of the Pipeline podcast breaks down SharePoint users' concerns about data migration, on-premises version support, ...

## SearchHRSoftware

• ### Video interview platforms make headway against consumer tech

Some recruiters prefer the familiarity of popular video tools, like FaceTime and Skype, but they may be missing out on the rich ...

• ### Workday payroll system covers Minnesota healthcare network

A big physicians group affiliated with the University of Minnesota Medical School opted for a Workday cloud payroll system to ...

• ### Federal HR seeks corporate simplicity, says its new chief

Federal HR has a new reformer, Jeff Pon, the director of the U.S. Office of Personnel Management. He wants to modernize federal ...

Close