///////delphi中。。
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
adoquery1.SQL.Add('execute test :time1,:time2');
ADOQuery1.Parameters.Items[0].DataType:=ftdatetime;
adoquery1.Parameters.Items[0].Value:=datetostr(datetimepicker1.Date);
ADOQuery1.Parameters.Items[1].DataType:=ftdatetime;
adoquery1.Parameters.Items[1].Value:=datetostr(datetimepicker2.Date);
adoquery1.Prepared;
adoquery1.ExecSQL;
ADOQuery1.Open;
end;
/////////SQL中
CREATE PROCEDURE test
@time1 datetime,
@time2 datetime
AS
Declare @sql varchar(8000)
Set @sql = 'Select ttime as 日期'
Select @sql = @sql + ',sum(case item when '''+item+''' then value else 0 end) ['+item+']'
from (select distinct item from cycletable) as cycletable --把所有唯一的 名称都列举出来
Select @sql = @sql+' from cycletable-- where recordTime>'+@time1+''
Exec (@sql)
GO
/////////执行时提示 从字符串转换为datetime时发生语法错误,哪位高手能帮忙看一下是什么原因??
谢谢!
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
adoquery1.SQL.Add('execute test :time1,:time2');
ADOQuery1.Parameters.Items[0].DataType:=ftdatetime;
adoquery1.Parameters.Items[0].Value:=datetostr(datetimepicker1.Date);
ADOQuery1.Parameters.Items[1].DataType:=ftdatetime;
adoquery1.Parameters.Items[1].Value:=datetostr(datetimepicker2.Date);
adoquery1.Prepared;
adoquery1.ExecSQL;
ADOQuery1.Open;
end;
/////////SQL中
CREATE PROCEDURE test
@time1 datetime,
@time2 datetime
AS
Declare @sql varchar(8000)
Set @sql = 'Select ttime as 日期'
Select @sql = @sql + ',sum(case item when '''+item+''' then value else 0 end) ['+item+']'
from (select distinct item from cycletable) as cycletable --把所有唯一的 名称都列举出来
Select @sql = @sql+' from cycletable-- where recordTime>'+@time1+''
Exec (@sql)
GO
/////////执行时提示 从字符串转换为datetime时发生语法错误,哪位高手能帮忙看一下是什么原因??
谢谢!
SQL语句有没有错》?
DELPHI语句能给的详细点吗??
十分感谢!!!!
中的@time1换为convert(varchar(20), @time1, 101)就可以了,
问题出现在@time1放在字符串中时,sqlserver要强制类型转换,但是转换后的格式是默认格式:mon dd yyyy hh:miAM(或 PM),这种格式和recordtime比较的时候不匹配,所以要自己手动转换,
adoquery1.Parameters.Items[0].Value:=datetostr(datetimepicker1.Date);
ADOQuery1.Parameters.Items[1].DataType:=ftdatetime;
adoquery1.Parameters.Items[1].Value:=datetostr(datetimepicker2.Date);
既然DataType是ftDateTime,那么传进去的参数值怎么还是字符串?
改成:
ADOQuery1.Parameters.Items[0].DataType:=ftdatetime;
adoquery1.Parameters.Items[0].Value:=datetimepicker1.Date;
ADOQuery1.Parameters.Items[1].DataType:=ftdatetime;
adoquery1.Parameters.Items[1].Value:=datetimepicker2.Date;
hhnick 你好;
你的方法编译能通过,查询也不报错 了,但是却不能根据限定的时间段查询了,好像时间约束条件不起作用。
如SQL 里为2007-12-18 15:00:00 则Delphi里就为FormatDateTime('YYYY-MM-DD HH:MM:SS',now)
还有用datetimepicker.data只能取到年月日,而不能取到小时分秒
所以结果无
如果用DatetimePicker.data就要去格式化存储过程的成为年月日
Convert(varchar(12), @time1, 23)
祝你成功!