2017-06-09 51 views
0

我很努力根據當前日期和記錄條目的日期差異來添加where子句。還有其他一些簡單的條款,但我對這些沒有任何問題,所以我正在使演示數據變得簡單,以突出顯示我遇到的問題。where-clause基於當前和記錄日期

演示數據集:

Rec_no Rec_date  
77 20170606 
69 20170605 
55 20170601 
33 20170520 
29 20170501 

日期記錄在格式爲yyyymmdd,我想建立一個where子句到從當前日期創建的天X個前只顯示記錄 - 可以說10。

因此,在這種情況下,只應記錄33和29。

不幸的是我不確定實際的數據庫引擎是什麼,但它應該來自IBM。

這怎麼辦?

+1

你不應該以這種格式存儲日期。將其作爲日期類型進行存儲 – Jens

+0

您可以共享您嘗試執行的查詢嗎? –

+2

(1)修正你的數據結構以使用'date'類型來存儲日期。 (2)用你正在使用的數據庫標記你的問題。如果您不知道您使用的是什麼引擎,那麼幾乎沒有人可以做(IBM銷售DB2,Informix,Netezza和Vertica,另外幾乎所有其他數據庫都在IBM硬件上運行)。 –

回答

0

正如評論中所建議的,更新模式以便將日期存儲在正確的類型中是開始之前的最佳選項,但是如果無論出於何種原因都無法做到這一點,則首先需要將存儲的日期轉換爲正確的運行時格式。

我會在t-sql中編寫一個示例,因爲這就是我所知道的。一旦你制定了你的DBMS,我可以編輯到相關的功能/語法

Select * 
FROM Demodataset 
WHERE Cast(Rec_Date as datetime) >= dateadd(day,-10,getdate()) 
+0

不應該是'> ='而不是'='? –

+0

@PrabhatG這將是如果問題說創建不到10天前,但問題說,創建x天前的記錄 – MarkD

+1

OP說'只有記錄不應該顯示33和29, –