Alright, so I\'ve checked many many many other posts on stackoverflow to see if this is mentioned anywhere, and the answers provided don\'t quite make sense to me...I\'m thinkin
The easeyest way of doing this is writing a function in oracle like DATEDIFF in mysql, id done this like :
function datediff( p_what in varchar2, p_d1 in date, p_d2 in date) return number as l_result number;
BEGIN
select (p_d2-p_d1) *
decode( upper(p_what), 'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL )
into l_result from dual;
return l_result;
END;
and call this function like :
DATEDIFF('YYYY-MM-DD', SYSTIMESTAMP, SYSTIMESTAMP)
in your sql command
Assuming that purch_date
is defined as a DATE
SELECT purch_id,
(trunc(sysdate, 'YYYY') +
interval '11' month +
interval '24' day) -
purch_date days_to_christmas
FROM CS260USER.candy_purchase;
A couple of notes
purch_date
has a time component, you might want to truncate the result of the date subtraction.purch_date
was, for example, December 30, that you would want the result to be 360 days until the next Christmas rather than -5 days until the last Christmas.