From c2089461757cd11111123fcc9d4bc8eed0f4dff2 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Fri, 26 Jan 2007 14:59:56 +0000 Subject: [PATCH] * previous version of addDays cause infinite loop --- db/ddlutils/postgresql/functions/addDays.sql | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/db/ddlutils/postgresql/functions/addDays.sql b/db/ddlutils/postgresql/functions/addDays.sql index 4692410be8..44f236fcc8 100644 --- a/db/ddlutils/postgresql/functions/addDays.sql +++ b/db/ddlutils/postgresql/functions/addDays.sql @@ -22,13 +22,18 @@ CREATE OR REPLACE FUNCTION addDays(datetime TIMESTAMP WITH TIME ZONE, days Numeric) RETURNS DATE AS $$ +declare duration varchar; BEGIN - RETURN CAST(datetime AS DATE) + days; + if datetime is null or days is null then + return null; + end if; + duration = days || ' day'; + return cast(date_trunc('day',datetime) + cast(duration as interval) as date); END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION subtractdays (day TIMESTAMP WITH TIME ZONE, days NUMERIC) -RETURNS TIMESTAMP WITH TIME ZONE AS $$ +RETURNS DATE AS $$ BEGIN RETURN addDays(day,(days * -1)); END;