query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select D.sdfg ');
query1.SQL.Add('a.sdfg ');
query1.SQL.Add('to_char(fl_Date,''yyyymmddhh24miss'') ');
query1.SQL.Add('to_char(e.dfff_date,''yyyymmddhh24miss'') 生成时间,');
query1.SQL.Add('to_char(e.gggg_date,''yyyymmddhh24miss'') 完成时间,');
query1.SQL.add('name');
query1.SQL.Add('from qqq a,www b,ddd c,eee d,hhh e');
...
..
...query1.Open;
if (strtoint(datetostr(now))-strtoint(datetostr(query1.FieldByName('生成时间').Asdatetime)))>120 then
begin
showmessage('成功');
end;
end;
query1.SQL.Clear;
query1.SQL.Add('select D.sdfg ');
query1.SQL.Add('a.sdfg ');
query1.SQL.Add('to_char(fl_Date,''yyyymmddhh24miss'') ');
query1.SQL.Add('to_char(e.dfff_date,''yyyymmddhh24miss'') 生成时间,');
query1.SQL.Add('to_char(e.gggg_date,''yyyymmddhh24miss'') 完成时间,');
query1.SQL.add('name');
query1.SQL.Add('from qqq a,www b,ddd c,eee d,hhh e');
...
..
...query1.Open;
if (strtoint(datetostr(now))-strtoint(datetostr(query1.FieldByName('生成时间').Asdatetime)))>120 then
begin
showmessage('成功');
end;
end;
解决方案 »
- 如何让AdvMemo对中文一次性选择两个字节(像普通的Memo一样)
- 想做个自动浏览网页的工具
- datamodule使用出错,急急
- DefaultDrawcolumnCell(Rect, datacol,column, State);这句在ehlib4报错??
- 用什么DATASET可以只让数据库在本地操作?
- 如何在EDIT中既限制只能输入数字又保证能输入小数?在线等~~~
- 测试
- datasnap 分发服务端和客户端要发布相关的文件
- 老问题:适用Win98以前版本,不带出MSDA(令人讨厌),如何分发Access97的ADO、Jet4.0驱动程序?
- 用一非常怪的问题(关于MDI)
- 怎么捕获net send 发过来的消息
- 怎么在按钮里添加指向下个页面的代码。。
if (strtoint(datetostr(now))-strtoint(datetostr(query1.FieldByName('生成时间').Asdatetime)))>120 then因为日期字符串转换成int是会发生错误的不必转换这么多,直接
if (Now - query1.FieldByName('生成时间').AsDateTime) > 120 then
就可以了如果上面的语句不合你原来语义,也可以写成
if (Trunc(Now) - Trunc(query1.FieldByName('生成时间').AsDateTime)) > 120 then
是在query1.SQL.Add('to_char(e.dfff_date,''yyyymmddhh24miss'') 生成时间,');
这改成字符串型了。
你能教我怎么做吗?
type
TTimestampStrRec = packed record
Year: array[1..4] of Char;
Month: array[1..2] of Char;
Day: array[1..2] of Char;
Hour: array[1..2] of Char;
Min: array[1..2] of Char;
Sec: array[1..2] of Char;
end;
const
SizeOfStrRec = SizeOf(TTimestampStrRec);
var
R: TTimestampStrRec;
Y, M, D, H, M_, S: Word;
begin
Assert(Length(aTimestampStr) = SizeOfStrRec); Move(aTimestampStr[1], R, SizeOfStrRec); with R do
begin
Y := StrToInt(Year);
M := StrToInt(Month);
D := StrToInt(Day);
H := StrToInt(Hour);
M_ := StrToInt(Min);
S := StrToInt(Sec);
end; Result := EncodeDateTime(Y, M, D, H, M_, S, 0);
end;以上是我刚才为你写的一个小函数,用来把你的字符串转换成日期
用时if (Now - MyConvertS2D(query1.FieldByName('生成时间').AsString)) > 120 then
但是你为什么一定要在sql中用to_char把它转换成字符串呢?保留原来的类型岂不更简单?
query1.Close;
query1.SQL.Clear; //此处少了逗号
query1.SQL.Add('select D.sdfg,');
//此处少了逗号
query1.SQL.Add('a.sdfg,'); //此处少了逗号
query1.SQL.Add('to_char(fl_Date,''yyyymmddhh24miss''),');
query1.SQL.Add('to_char(e.dfff_date,''yyyymmddhh24miss'') 生成时间,');
query1.SQL.Add('to_char(e.gggg_date,''yyyymmddhh24miss'') 完成时间,');
query1.SQL.add('name');
query1.SQL.Add('from qqq a,www b,ddd c,eee d,hhh e');
...
..
...query1.Open;
if (strtoint(datetostr(now))-strtoint(datetostr(query1.FieldByName('生成时间').Asdatetime)))>120 then
begin
showmessage('成功');
end;
end;
我把它加到新建的UNIT里。然后USE它。然后用这个函数不对啊?谢谢!大哥指教?
如果很多地方都用到它,就放在公用单元里面,然后uses它,
只那一个地方,就不必了,直接写在你的过程里面就行了procedure YourOrgProc;
var
... //you variable declaration here function MyConvertS2D(const aTimestampStr: string): TDateTime;
type
TTimestampStrRec = packed record
Year: array[1..4] of Char;
Month: array[1..2] of Char;
Day: array[1..2] of Char;
Hour: array[1..2] of Char;
Min: array[1..2] of Char;
Sec: array[1..2] of Char;
end;
const
SizeOfStrRec = SizeOf(TTimestampStrRec);
var
R: TTimestampStrRec;
Y, M, D, H, M_, S: Word;
begin
Assert(Length(aTimestampStr) = SizeOfStrRec); Move(aTimestampStr[1], R, SizeOfStrRec); with R do
begin
Y := StrToInt(Year);
M := StrToInt(Month);
D := StrToInt(Day);
H := StrToInt(Hour);
M_ := StrToInt(Min);
S := StrToInt(Sec);
end; Result := EncodeDateTime(Y, M, D, H, M_, S, 0);
end;begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select D.sdfg ');
query1.SQL.Add('a.sdfg ');
query1.SQL.Add('to_char(fl_Date,''yyyymmddhh24miss'') ');
query1.SQL.Add('to_char(e.dfff_date,''yyyymmddhh24miss'') 生成时间,');
query1.SQL.Add('to_char(e.gggg_date,''yyyymmddhh24miss'') 完成时间,');
query1.SQL.add('name');
query1.SQL.Add('from qqq a,www b,ddd c,eee d,hhh e');
...
..
... query1.Open;
if (Now - MyConvertS2D(query1.FieldByName('生成时间').AsString)) > 120 then
showmessage('成功');
end;适才楼上的兄弟说你的SQL少了一些逗号,你的程序能够运行完query1.open这一句?