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