paradox的日期时间类型的用法(50分)

  • 主题发起人 主题发起人 gdzscj
  • 开始时间 开始时间
G

gdzscj

Unregistered / Unconfirmed
GUEST, unregistred user!
请问哪里能指点一下关于paradox的日期时间类型的相关用法?
如我在database desktop的sql editor中运行语句
select * from price where dstart>='2005-5-1' --dstart是日期型
提示 type mismatch in expression.
是不是语句的格式不对?该怎么写?如果dstart是日期时间型又该怎么写?
谢谢!
 
你要将'2005-5-1'转化为日期型
这样写:
...
with Query do
begin
SQL.Clear;
SQL.Add('select * from price where dstart>=:dstart');
ParamByName('dstart').AsDate := StrToDate('2005-5-1');
ExecSQL;
end;
...
 
dstart>='05/01/2005'
 
TO Johnny_du:
如果是日期时间型,又该怎么写?
 
...
with Query do
begin
SQL.Clear;
SQL.Add('select * from price where dstart>=:dstart');
ParamByName('dstart').AsDateTime := StrToDateTime('2005-5-1'); //将AsDate换成AsDateTime;将StrToDate换成StrToDateTime既可
ExecSQL;
end;
...
 
那就StrToDateTime了
 
to Johnny_du:
运行后提示语句错误,ParamByName没定义
 
TO Johnny_du:
最后一个问题:
我把语句改为
query1.ParamByName('dstart').AsDateTime := now;
查询不到结果,跟踪运行说now是不可预测的值。应该怎么写呢?
 
Query1.ParamByName('dstart').AsDateTime := Now;
的写法没错,肯定是你的程序其它地方存在问题,请仔细检查!
 
但是一般来说用AsDate就足够了,因为查询一般来说不必精确到几分几秒的,所以你用AsDateTime和StrToDateTime来过虑记录一般来说是查不到记录的,因为你不可能在插入记录的同时去查询记录(当然除非是一台机器在输入,另一台刚好在查询,不过这种概率太小了,除非是在处理股票交易类事务等大宗并发业务类的过程中)
 
我做的是一个POS系统,需要对时分秒做对比,所以要求要用datetime类型。如果取不到now的值去和特定时间作比较,程序就无法执行了。请问还有什么办法?
 
原来是我自己的问题,谢谢!
 
...
with Query do
begin
SQL.Clear;
SQL.Add('select * from price where dstart<=:dstart'); //把>=改成<=就可以了
ParamByName('dstart').AsDateTime := StrToDateTime('2005-5-1'); //将AsDate换成AsDateTime;将StrToDate换成StrToDateTime既可
ExecSQL;
end;
...
 
后退
顶部