First Commit - Source Code from Reply
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_ORE_LAVORATIVE (data_finale IN DATE, data_iniziale IN DATE)
|
||||
RETURN NUMBER
|
||||
-- Restituisce il numero di ore lavorative tra data_iniziale e data_finale
|
||||
IS
|
||||
appo_ore NUMBER;
|
||||
appo_giorni NUMBER;
|
||||
appo_ore_iniziali NUMBER;
|
||||
appo_ore_finali NUMBER;
|
||||
appo_min_finali NUMBER;
|
||||
appo_min_iniziali NUMBER;
|
||||
BEGIN
|
||||
appo_ore := 0;
|
||||
|
||||
IF data_finale > data_iniziale
|
||||
THEN
|
||||
appo_giorni := dwh.fun_giorni_lavorativi (data_finale, data_iniziale);
|
||||
|
||||
IF appo_giorni > 0
|
||||
THEN
|
||||
appo_ore := appo_giorni * 24;
|
||||
END IF;
|
||||
|
||||
appo_ore_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'HH24'));
|
||||
appo_ore_finali := TO_NUMBER (TO_CHAR (data_finale, 'HH24'));
|
||||
appo_ore := appo_ore + appo_ore_finali - appo_ore_iniziali;
|
||||
appo_min_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'mi'));
|
||||
appo_min_finali := TO_NUMBER (TO_CHAR (data_finale, 'mi'));
|
||||
|
||||
IF (appo_min_finali - appo_min_iniziali) < 0
|
||||
THEN
|
||||
appo_ore := appo_ore - 1;
|
||||
END IF;
|
||||
ELSE
|
||||
appo_ore := 0;
|
||||
END IF;
|
||||
|
||||
RETURN appo_ore;
|
||||
END fun_ore_lavorative;
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user