各位高手帮我看看,如何写这条sql的查询语句(50分)

  • 主题发起人 主题发起人 爱睡的狗狗
  • 开始时间 开始时间

爱睡的狗狗

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,我想进行时间段的查询。求一条sql语句。要求sql查询语句要同时可以支持access数据库和sql sever 2000 数据库。时间参数由4个datatimepicker得到,如2006-8-31 12:30:23 到 2006-9-1
17:30:56 之间的数据。还请各位高手多多指点 现在分不多,但那位高手能够解决问题,以后定将报答
 
select * from table where data1>=aa and data1<=bb
 
就如二楼所示,行的
 
你的难点应该是时间的准确表达吧?给你个例子:这个例子中,日期时间在一个字段中。
sdate1 :=dateToString(Start_DateTimePicker.DateTime);
sdate2 := FormatDateTime('hh:mm:ss', DateTimePicker1.DateTime);

sdate3 := dateToString(Stop_DateTimePicker.DateTime);
sdate4 := FormatDateTime('hh:mm:ss', DateTimePicker2.DateTime);

sqlstr := ' select * from Table where beginTM>=datevalue('+
QuotedStr(sdate1)+'+timevalue('+QuotedStr(sdate2) +
' and endTM<=datevalue('+QuotedStr(sdate3)+')+timevalue('+QuotedStr(sdate4)+')';

注:日期时间类型本质上是浮点类型,日期部分是整数部分,时间部分是小数部分
datevalue(日期的文本串) 取日期时间的日期部分,返回数值型(整数部分)
timevalue(时间的文本串) 取日期时间的时间部分,返回数值型(小数部分)

两者相加即为该日期时间的准确表达。

相信你能举一反三;
 
procedure TForm1.Button1Click(Sender: TObject);
var
dtStart,dtEnd: TDateTime;
begin
dtStart := DateTimePicker1.Date + DateTimePicker2.Time; //起始时间
dtEnd := DateTimePicker3.Date + DateTimePicker4.Time; //终止时间
with Query1 do
begin
SQL.Clear;
SQL.Add('SELECT * FROM 表名 WHERE 日期>=:日期1 AND 日期<=:日期2');
{或者SQL.Add('SELECT * FROM 表名 WHERE 日期 BETWEEN :日期1 AND :日期2');}
ParamByName('日期1').AsDateTime := dtStart;
ParamByName('日期2').AsDateTime := dtEnd;
Open; //你要的过虑记录
end;
end;
 
同意Johnny_du的,同时支持access和ms sql ,你需要使用参数才可以。
access对日期需要加#,ms sql不需要加 ,如果你兼顾就使用参数,可以避免这些问题。
 
谢谢各位。问题解决
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
857
SUNSTONE的Delphi笔记
S
S
回复
0
查看
783
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
923
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部