如何查找MS SQL SERVER 7的DATETIME字段(100分)

  • 主题发起人 主题发起人 erictim
  • 开始时间 开始时间
E

erictim

Unregistered / Unconfirmed
GUEST, unregistred user!
我用MS SQL SERVER 7做后台数据库,现在有一个表TABLE1结构为
NAME CHAR(7)
oper_date datetime default =getdate()
total decimal (10,2)

现在,我想通过一个EDIT来输入要查询的名字和操作日期
// Query1.SQL 为:select name,total fromtable1 where name=:name and oper_date=:operdate
With Query1 do
begin
if Active then Close;
ParamByName('name').AsString := Edit1.Text;
ParamByName('operdate').AsDateTime := StrToDatetime(Edit2.Text)
Open;
end;
但是,没有数据产生。
问:我想查出某天,某个人的操作情况,该怎么写?
 
DecodeTime(Edit2.Text,Year,Month,Day);
。。。
将YEAR,MONTH,DAY转化成 STRING 格式为YYYY MMDD 假设为 STR
。。。
ParamByName('operdate').AsDateTime:= STR
 
datetime数据类型的格式最小精度为秒级,估计你的输入没有精确到秒,所以没有哪个时间
字段可以等于输入的时间,当然没有数据了。你可以用datepart得出具体的年、月、日进行
比较,这样应该可以,反正我是这么解决的。
 
不要使用EDIT,使用DATATIMEPICKER控件。这样一方面可以对日期型的数值进行规范,
另一方面也可以要查询某一天的数据,不妨将由DATETIMEPICKER获得的值再加上一个
时间段如:00:00:00---23:59:00,就可以查询了
 
SQLSERVER中的DATETIME数据类型的比较精度为秒,
如你在输入数据时未精确到秒SQLSERVER将自行将时间默认为12:00 AM,
你在进行查询时如只有日期值系统也会将时间默认12:00 AM,
看你的程序,可能是输入的日期时间与数据库中的日期时间值在时间上不能匹配,
所以查询不出数据,你可以分别比较年、月、日三个参数来查询某一天的数据,
也可采用zengr所说的用一个日期时间范围来进行查找。

 
Str := 'select name,total fromtable1 where name=:name and ';
Str := Str+;Convert(Char,Eventdate,111)=:operdate';//日期格式为1999/09/21形式
With Query1 do
begin
if Active then Close;
Query1.Sql.Clear;
Query1.sql.add(Str);
ParamByName('name').AsString := Edit1.Text;
ParamByName('operdate').AsDateTime := StrToDatetime(Edit2.Text);
Open;
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
687
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
775
import
I
后退
顶部