2012-09-17 14 views
0

這裏有一個正確和工作聲明:使用當年而不是甲骨文hardcording它的

SELECT purch_id AS PURCH_ID 
     ,TO_DATE('25-DEC-12') - purch_date AS DAYS_TO_CHRISTMAS 
FROM CS260USER.candy_purchase; 

我想修改它,這樣,而不是硬編碼2012(或12)在結束的表達,我希望它抓住當前的系統年,並最終擊敗那個吸盤。

想法?

+0

[SYSDATE](http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm)函數返回當前服務器日期。 –

回答

1
SELECT purch_id AS PURCH_ID, 
     (trunc(sysdate,'yyyy') + 
      interval '11' month + 
      interval '24' day) - purch_date AS DAYS_TO_CHRISTMAS 
    FROM CS260USER.candy_purchase; 

將工作。您也可以通過字符串操作

SELECT purch_id AS PURCH_ID, 
     to_date('12-25-' || to_char(sysdate,'yyyy'), 'mm-dd-yyyy') 
     - purch_date AS DAYS_TO_CHRISTMAS 
    FROM CS260USER.candy_purchase; 

我喜歡做的琴絃上日期和字符串操作日期操作雖然字符串操作可能會更清楚在這裏做。