一个时间比较的问题,用sql怎样实现,DFW进来看看 (50分)

  • 主题发起人 主题发起人 Imfish
  • 开始时间 开始时间
I

Imfish

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中有两个字段:
日期 时间
........ ........
2002.12.18 16.08.45
我通过下面的代码取得了最大的时间值
with adoquery1 do
begin
Close;
SQL.Clear;
sql.Add('select MAX(rq) as 日期 from list_b');
open;
edit1.text:=adoquery1.fieldbyname('日期').asstring;
close;
sql.clear;
sql.Add('select MAX(sj) as 时间 from list_b where rq='''+edit1.text+'''');
open;
end;
edit2.text:=adoquery1.fieldbyname('时间').asstring;
把取出来的值放在edit1和edit2中
问:以后我又入库新的数据,用sql语句怎样取出比上面时间更新的数据的所有记录?
 
改一下
sql.add(format(
'select * from tab where rq>=#%s# and sj>#%s# or rq>#%s#;'
[edit1.text,edit2.text,edit1.text]));
 
查询时将日期、时间合成一个 DateTime 型来做不是方便嘛
 
同样的比较啊
不知道你的提问有什么意思
 
不改库结构,查询的时候通过数据类型转换合成一个。
 
sql.add(format(
'select * from tab where rq>#%s# or (rq=#%s# and sj>#%s#)',
[edit1.text, edit1.text], edit2.text));
 
SELECT MAX(CAST(CAST(rq as CHAR(11)+CAST(sj as CHAR(8)) AS DATETIME)) FROM list_b
 
加一个空格
写成 CAST(rq as CHAR(10)+' '+CAST(sj as CHAR(8)
 
你的程序本来就可以哦
 
大家看清楚是取出‘所有’的数据,不是一条数据。
 
SQL.add('SELECT * FROM list_b WHERE
CAST(CAST(rq as CHAR(10)+'' ''+CAST(sj as CHAR(8)) AS DATETIME) >
CAST('''+edit1.text+' '+edit2.text+''' AS DATETIME)');
应该可以了吧
 
将你的query重新open不就行了
 
小的接受答案了,为各位加分
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
C
回复
21
查看
2K
nm_wyh
N
后退
顶部