Snippet Name: Date Calculations Description: Returns a day that is a specified number of days in the future, skipping weekends. Also see:» BR2NL Function: Opposite of NL2BR » A JavaScript implementation of the fam... » Call a PHP function when clicking on a... » FUNCTIONS: Deterministic » FUNCTIONS: Nested Functions » FUNCTIONS: IF statement » FUNCTIONS: date/time » FUNCTIONS: Sample functions » FUNCTIONS: drop » FUNCTIONS: Recompile » FUNCTIONS: DEBUG mode » FUNCTIONS: IN OUT parameter » FUNCTIONS: with output parameters » FUNCTIONS: with parameters » FUNCTIONS: without parameters » FUNCTIONS: Create function » FUNCTIONS: special restrictions » FUNCTIONS: System Privileges » Recursive fopen() function » INDEXES: ENABLE (function-based index) » INDEXES: DISABLE (function-based index) » PACKAGES: one function » INDEXES: Function-Based Index » IN Function » Built-In Functions: CASE » Built-In Functions: DECODE » Alternate Title Case function » SELECT: Using Functions » UPDATE: Update a partitioned table » UPDATE: Update based on a record Comment: (none) Language: PL/SQL Highlight Mode: PLSQL Last Modified: March 03rd, 2009
Description: Returns a day that is a specified number of days in the future, skipping weekends.
Also see:» BR2NL Function: Opposite of NL2BR » A JavaScript implementation of the fam... » Call a PHP function when clicking on a... » FUNCTIONS: Deterministic » FUNCTIONS: Nested Functions » FUNCTIONS: IF statement » FUNCTIONS: date/time » FUNCTIONS: Sample functions » FUNCTIONS: drop » FUNCTIONS: Recompile » FUNCTIONS: DEBUG mode » FUNCTIONS: IN OUT parameter » FUNCTIONS: with output parameters » FUNCTIONS: with parameters » FUNCTIONS: without parameters » FUNCTIONS: Create function » FUNCTIONS: special restrictions » FUNCTIONS: System Privileges » Recursive fopen() function » INDEXES: ENABLE (function-based index) » INDEXES: DISABLE (function-based index) » PACKAGES: one function » INDEXES: Function-Based Index » IN Function » Built-In Functions: CASE » Built-In Functions: DECODE » Alternate Title Case function » SELECT: Using Functions » UPDATE: Update a partitioned table » UPDATE: Update based on a record
CREATE OR REPLACE FUNCTION business_date (start_date DATE, Days2Add NUMBER) RETURN DATE IS Counter NATURAL := 0; CurDate DATE := start_date; DayNum POSITIVE; SkipCntr NATURAL := 0; BEGIN WHILE Counter < Days2Add LOOP CurDate := CurDate+1; DayNum := TO_CHAR(CurDate, 'D'); IF DayNum BETWEEN 2 AND 6 THEN Counter := Counter + 1; ELSE SkipCntr := SkipCntr + 1; END IF; END LOOP; RETURN start_date + Counter + SkipCntr; END business_date; /