0
我有一個允許用戶創建記錄的數據庫系統。在將記錄發佈到表格時,它捕獲當前的日期和時間。按日期範圍篩選數據庫記錄
我有一個允許用戶過濾/搜索記錄的表單。
允許過濾記錄日期的最佳方法是什麼?像StartDate EndDate一樣?
以下是我在捕獲記錄的日期時間時執行的操作。
FieldByName('logged_dt')。AsDateTime:= now;
我有一個允許用戶創建記錄的數據庫系統。在將記錄發佈到表格時,它捕獲當前的日期和時間。按日期範圍篩選數據庫記錄
我有一個允許用戶過濾/搜索記錄的表單。
允許過濾記錄日期的最佳方法是什麼?像StartDate EndDate一樣?
以下是我在捕獲記錄的日期時間時執行的操作。
FieldByName('logged_dt')。AsDateTime:= now;
這樣做的典型方法是通過使用具有參數SQL和WHERE
子句:
Query.SQL.Clear;
Query.SQL.Add('SELECT ColumnA, ColumnB, DateCol');
Query.SQL.Add('FROM TableA');
Query.SQL.Add('WHERE DateCol >= :StartDate');
Query.SQL.Add('AND DateCol <= :EndDate');
Query.ParamByName('StartDate').AsDateTime := StartDateYouWant;
Query.ParamByName('EndDate').AsDateTime := EndDateYouWant;
Query.Open;
if Query.IsEmpty then
ShowMessage('No records found in that range')
else
// Do whatever with the rows found
一個可選的語法是使用BETWEEN
,這將在WHERE
子句更改爲
Query.SQL.Add('WHERE DateCol BETWEEN :StartDate AND :EndDate');
由於價值的時間部分以及使用>=
(GTE)和(根據我自己的經驗),我遇到了使用DATETIME列使用BETWEEN
的問題(LTE)運營商更容易工作。您的里程可能會有所不同,因此您應該測試並決定哪種方法最適合您的特定DBMS和數據。
您是否以文本形式在數據庫中存儲日期? – 2015-03-19 13:08:43
我編輯了我的問題,我錯了我在捕獲日期/時間時的操作 – Sharpie 2015-03-19 13:21:42
我已經回滾了您的編輯,因爲您現在收到的錯誤消息是一個不同的問題。在收到答案後,你不能對改變它的全部含義的問題做出重大改變。如果您現在有新問題,請創建一個新問題並在此處詢問。我回答了您在此處詢問的問題,即如何按日期範圍篩選記錄。 – 2015-03-25 15:52:30