2016-11-29 119 views
0

目標:無論何時使用SYSDATE檢索特定日期的數據,我都無法獲取正確的數據。ORACLE PL/SQL - 使用SYSDATE檢索特定日期的數據時檢索問題

我已完成迄今爲止:我創建了一個表,其中包含以下字段 sales_Date | sales_Id |名稱| Load_Date

該表包含數千條記錄。如果我想查看一週後的銷售詳情。我使用下面的查詢,

SELECT TRUNC(sales_Date),SUM(sales_ID) 
FROM sales_DB 
WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-7) AND TRUNC(SYSDATE) 
GROUP BY TRUNC(sales_Date) 

上面的查詢清單中列表順序的一些細節(其中有_sales_Id_的總和爲7天)。但是, 如果我想檢索特定日期的數據(讓我考慮2天回),

SELECT TRUNC(sales_Date),SUM(sales_ID) 
FROM sales_DB 
WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1) 
GROUP BY TRUNC(sales_Date) 

上面的查詢顯示_sales_Id_的總和,我在查詢中提到了一個具體的數據,除的數據屬於第二天

總之,如果我想找回這是發生在前天前的銷售細節,一些數據是發生在昨日越來越重疊每當我試圖找回它。

即使我們也嘗試了數字格式像
'12 - 辛16 12.00.00.000000 AM'AND'12-OCT-16 11.59.59.999000 PM,

因爲我們使用任務調度,我們不能與人工檢索一起去。它必須在.bat文件中安排一次。並且任務將每天觸發。

是否有任何解決方案,以避免使用SYSDATE這些數據重疊。還是有任何其他替代方法來檢索特定日期的數據。

+0

其中TRUNC(sales_date)= TRUNC(SYSDATE-1) – Rene

+0

嘗試'(SYSDATE-2)和TRUNC(SYSDATE-1) - 60年1月24日/ 60' –

+0

sales_date列的數據類型是什麼? – Boneist

回答

2

之間是侵權。改變TRUNC之間

WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1) 

WHERE sales_Date 
>= TRUNC(SYSDATE-2) and sales_Date < TRUNC(SYSDATE-1) 
+0

我只是要發佈這個答案。我總是使用後面的語句,因爲使用BETWEEN語句很容易使用。 – Doug

+0

謝謝你的時間。我們已經嘗試了這一點,它工作正常。我們非常感謝您的努力。現在我們能夠檢索到確切的數據而沒有任何重疊。 –