2012-12-18 79 views
1

我正在嘗試創建比用戶可以在將來運行的報表。我需要指定一個日期範圍,在這種情況下,這個日期範圍是最後6周的數據。我在此報告中使用的日期字段是app_receipt_date。我只是想學習如何使用類似於excel today()函數的函數。使用今天的日期創建日期範圍

這裏是sql語句。忽略這是我最後一次執行此操作的日期。再次,我正試圖「自動化」這種前進。

select a.underwriting_app_id, 
    q.underwriting_quote_id, 
    a.application_source, 
    q.insured_id, 
    q.policy_year, 
    a.underwriting_rep, 
    --b.marketing_rep, 
    a.mail_name, 
    a.app_receipt_date, 
    a.effective_date, 
    a.expiration_date, 
    SUBSTR(TO_CHAR(a.effective_date, 'MM/DD/YYYY'), 1,2) as Month, 
    a.underwriting_app_status, 
    s.description, 
    a.last_status_date, 
    a.governing_class_code_id, 
    q.annual_premium, 
    q.create_date, 
    q.create_user 

from underwriting_app a, 
app_quote q, 
underwriting_app_status s 


where a.underwriting_app_id = q.underwriting_app_id and 
    a.underwriting_app_status = s.underwriting_app_status and 
    --a.agency_no = b.agency_no (+) and 
    q.active_quote_flag = 'Y' and 
    a.app_receipt_date > to_date('04-Nov-2012','dd-mm-yyyy') and 
    a.app_receipt_date < to_date('17-Dec-2012','dd-mm-yyyy') 

預先感謝您的幫助。

布拉德

+2

你正在使用哪個數據庫?並添加一些實際的SQL代碼將澄清這個問題。 – Andomar

+0

我不知道這是否回答你的問題。我在PL/SQL開發人員。 9.0?是對的嗎?對不起,再次感謝 – Brad

回答

2

如果您在Oracle中,則使用'SYSDATE'作爲當前日期,並且可以使用直接加法和減法來添加日期。如果你在一個星期OK假設是7天,你可以這樣做:

SELECT * FROM Your_Table 
WHERE app_receipt_date > SYSDATE - (6 * 7); 

其中「* 7」只是爲了表明你每個7天6周倍增。

+0

非常感謝! – Brad

+0

+1「假定一週爲7天」 - 我很佩服這個!我希望更多的開發人員會停下來思考他們正在構建的應用程序的假設:) –

1

如果您使用T-SQL,你可以使用GETDATE()函數來獲取今天的日期,然後你可以使用DATEADD()函數來調整值,讓您的範圍內,所以你可以使用類似的東西:

SELECT * FROM Your_Table 
WHERE app_receipt_date > DATEADD(week,-6,GETDATE()); 

希望這會有所幫助。

+0

我得到一個錯誤,說ORA-00904:「DATEADD」:無效標識符 – Brad

+0

謝謝你的方式! – Brad

+1

啊,你正在使用Oracle。要在Oracle中獲得今天的日期,可以使用**從雙重**中選擇sysdate。然後,您只需通過增加或減少,就可以從該日期加上/減去,例如,昨天的日期將**從雙**選擇sysdate-1等。 – steoleary