回 帖 发 新 帖 刷新版面

主题:请问,怎样筛选某一范围日期记录???

我在窗口上有两个edit控件,用来输入开始时间和结束时间,点击“查询”按钮后要在grid控件中显示这一范围内的记录值。我用select语句编程:select * from 表名 where 日期字段>=edit1.text and 日期字段<=edit2.text;是错误的。但是又没找到将字符型转换为日期型的函数,该怎样实现日期在某一范围内的记录筛选呢?请指教!

回复列表 (共10个回复)

沙发

SQLString := 'select * from 表名 where 日期字段 >= Cdate(' + #39 + edit1.text + #39 + ') and 日期字段 <= Cdate(' + #39 + edit2.text + #39 +')'

板凳

access数据库要使用#号来扩起日期值,比如:
cdate=#2006-02-02#

3 楼

我用的不是access数据库,我用的是delphi自带的数据库建的。我试了一下还是错了[em17]

4 楼

我用delphi自带的数据库建了表,然后在窗口上放置了两个edit控件,用来输入开始日期和结束日期,点击查询按钮后,根据开始日期或结束日期筛选符合条件的数据显示在grid中。但是我的select语句老是在日期的比较上出错(select * from 表名 where 日期字段>''%'+edit1.text+'%'' and 日期字段<''%'+edit2.text+'%'';)错误提示是:type mismatch in expression 

5 楼

edit.text是字符串类型要转换成日期类型
Format()

6 楼

format命令不能把字符串格式化成日期型

7 楼

用formatdatetime

8 楼

formatdatetime是将日期以指定的格式输出呀

9 楼

我主要是根据日期筛选记录,比如酒店里查询系统,根据客人入住时间,筛选出客人记录。

10 楼

select * from table where date>='''+strtodate(''+trim(edit1.text)+'')+'''and'''+strtodate(''+trim(edit2.text)+'');

我来回复

您尚未登录,请登录后再回复。点此登录或注册