我需要在DB2 for UNIX中计算一个日期。
我有一个日期字段: CONTRACT_DT(例子: 2006年2月7日, 2006年8月25日, 2007/11/16, 2008年2月25日, 2005年12月29日)
一个类型字段 PRIME(例如:C,I,E,Z,V,K)
我需要计算贷款审核的下一个日期(REVIEW_DT)。
一个例子是贷款01的CONTRACT_DT为3/1/2004,其PRIME为V. 所以我需要计算/添加三年到3/1/2004,直到我得到一个大于MTHLY_CLOSE_DT的日期。 (选项将是2007年,2010年,2013年,2016年,2019,2022) 所以正确答案是3/1/2016。
我意识到结构是CASE语句,但我不知道如何根据年份倍数选择日期并找到大于MNTHLY_CLOSE_DT的日期。
这是我到目前为止所拥有的:
CREATE PROCEDURE "FINANCE"."AL_LOOP_TEST"(OUT r_rvdt DATE)
BEGIN ATOMIC
DECLARE v_tmgi DATE;
DECLARE v_ctdt DATE;
DECLARE v_rvdt DATE;
SET v_tmgi = '2014-09-01'; --Close month
SET v_ctdt = '2012-06-02'; -- CONTRACT_DT
SET v_rvdt = v_ctdt; -- Starting Value for v_rvdt
WHILE (v_rvdt < v_tmgi) -- While Review Dt is less than Close Month
DO
SET v_rvdt = (v_rvdt + 5 YEAR); -- Add 5 years to date
END WHILE;
SET r_rvdt = v_rvdt;
END
谢谢!
答案 0 :(得分:0)
CREATE PROCEDURE "X"."AL_LOOP_TEST" ( OUT "R_RVDT" DATE )
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
MODIFIES SQL DATA
OLD SAVEPOINT LEVEL
BEGIN ATOMIC
DECLARE v_tmgi DATE;
DECLARE v_ctdt DATE;
DECLARE v_rvdt DATE;
SET v_tmgi = '2014-09-01'; --Close month
SET v_ctdt = '2002-06-02'; -- CONTRACT_DT
SET v_rvdt = v_ctdt; -- Starting Value for v_rvdt
WHILE (v_rvdt < v_tmgi) -- While Review Dt is less than Close Month
DO
SET v_rvdt = (v_rvdt + 5 YEAR); -- Add 5 years to date
END WHILE;
SET r_rvdt = v_rvdt;
END;