DELPHI中查询数据库中DATE字段的值???(急急急,入者有分!!!)
在么在DELPHI中查询指定日期,用SQL语句 问题点数:100、回复次数:23Top
1 楼LXJ2001(lxj)回复于 2002-04-04 12:09:40 得分 0
这个和所用的数据库支持的SQL有关Top
2 楼horlen(少爷的破拐杖)回复于 2002-04-04 12:13:15 得分 0
你的表中的日期数据是什么类型的。
你存入的时候是什么样子的Top
3 楼newwen(玩一会儿)回复于 2002-04-04 12:16:53 得分 0
类似于
'where datefield='''+ formatdatatime('yyyy-mm-dd',date)+''''
'yyyy-mm-dd'设成数据库可识别的格式Top
4 楼Delphifan()回复于 2002-04-04 12:25:03 得分 0
关键是什么数据库?Top
5 楼webnumen(webnumen)回复于 2002-04-04 12:25:11 得分 100
在access里面就用
'where field=#'+'2002-1-1'+'#'就可以了!
如果sql server
其实可以把它定义为字符就象楼上那位仁兄说的那样!Top
6 楼xjb2001(便衣超人)回复于 2002-04-04 12:25:26 得分 0
还是不行,已经更改过格式了,日期型数据是DATE,连接表是DBF格式,在DELPHI的SQL EXPLORER工具中找不到适合记录,'mm/dd/yyyy'及'yyyy-mm-dd'都试过了Top
7 楼agui(阿贵: 高级图形用户界面)回复于 2002-04-04 12:26:41 得分 0
查询两个日期之间的记录:
with Query1 do
begin
SQL.Clear;
SQL.Add( 'select * from Table1 where ADate between :Date1 and :Date2' );
ParamByName('Date1').AsDate := 小日期;
ParamByName('Date2').AsDate := 大日期;
Open;
end;
Top
8 楼newwen(玩一会儿)回复于 2002-04-04 12:27:53 得分 0
select * 试试看date的数据格式,或许2位年呢
或把select * 的查询结果贴出来Top
9 楼xjb2001(便衣超人)回复于 2002-04-04 12:37:56 得分 0
用##可以了
回复:AGUI(阿贵)
还是不能在DBF中查找。Top
10 楼neilwq(啄木鸟)回复于 2002-04-04 12:39:13 得分 0
在控制面板--区域设置--日期--短日期样式 中可以看到你的日期格式Top
11 楼agui(阿贵: 高级图形用户界面)回复于 2002-04-04 12:46:50 得分 0
不太可能吧,我的方法应该是跟数据库无关的Top
12 楼xjb2001(便衣超人)回复于 2002-04-04 12:47:22 得分 0
这是查找出来的结果,用SELECT *
xm csrq
--- -----
aaa 67-10-25
bbb 78-8-31
ccc 66-8-6
ddd 60-12-25Top
13 楼xjb2001(便衣超人)回复于 2002-04-04 12:54:23 得分 0
回复:AGUI(阿贵)
还是会报错,报操作符错。Top
14 楼jshnet(JshNet)回复于 2002-04-04 12:55:38 得分 0
SELECT *
FROM jyk
WHERE (jcsj = '1995-12-4 12:21:30')Top
15 楼CeleronII(抽烟的鱼)回复于 2002-04-04 12:57:29 得分 0
select * from tableName where rq='2002-12-23'
这样就可以了Top
16 楼newwen(玩一会儿)回复于 2002-04-04 13:02:56 得分 0
formatdatatime('yy-mm-dd',date)
AGUI(阿贵)的方法应该不会错啊
Top
17 楼xjb2001(便衣超人)回复于 2002-04-04 13:03:32 得分 0
回复:JSHNET(泰山),celeronll(抽烟的鱼)
我使用的数据库是老式的FOXPRO DBF数据库,根本用不了单引号,双引号,井号也不能用。老是会报操作符错,不知道用什么操作符才不会报错。Top
18 楼xjb2001(便衣超人)回复于 2002-04-04 13:07:48 得分 0
回复:newwen(wen)
好,我再试一下,我怀疑是数据库太老,会不会是不支持这些呢?Top
19 楼erickleung()回复于 2002-04-04 13:20:54 得分 0
Delphi对数据的类型的管制较严.
日期是以'Double'类型运算的, 而sql是以本文格式输入, 因此
要像AGUI(阿贵)所说先用formatdatetime做转换
但我较喜欢以
ParamByName('Date1').AsDate := 小日期;
ParamByName('Date2').AsDate := 大日期;
方式输入, 更清楚和易管理.Top
20 楼xunji(呵呵,MM,我想……)回复于 2002-04-04 13:24:50 得分 0
with Query1 do
begin
SQL.Clear;
SQL.Add( 'select * from Table1 where ADate=:Date1');
ParamByName('Date1').AsString := '2002-02-10';
Open;
end;Top
21 楼wylove(阿刚)回复于 2002-04-04 14:27:08 得分 0
不妨试一下:
'select * from dbftable where dtoc(rega_date)='2001-01-01''
应该没有问题Top
22 楼solocom(万成)回复于 2002-04-04 14:35:58 得分 0
我经常这样用(查当天的):
qurey.sql.add('select * from table where tb_data>:bdate and t_date<:edate ');
query.parambyname('bdate').asdate:=trunc(date);
query.parambyname('edate').asdate:=trunc(date)+1;
qeury.open;Top
23 楼hjb8000(北极熊)回复于 2002-04-04 15:11:02 得分 0
用法如下:(标准的SQL语句)
Select * form ff.db where SendTime between '28.02.1999' and '31.03.2002'
我一直这样用Top





