///////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时发生语法错误,哪位高手能帮忙看一下是什么原因??
谢谢!
解决方案 »
- cxGrid 如何显示 MSSQL 中 ntext 的内容?
- 两个cxGrid:cxGrid1和cxGrid2,如何关联让其成为主从关系?
- 怎么用IDHTTP登陆QQ空间
- 摄像头问题
- 请教一个弱弱的问题:关于Delphi编辑环境的字体
- 数据库服务器网络断开或者服务终止的处理问题???请各位大侠多多帮忙!
- 新手请教高手:如何给delphi文件打包安装!(我没分了)
- 请问如何获取IDTCPSERVER的端口?
- DBGRID显示了存储过程得来的数据,能不能给DBGRID增加这样一列:该列可以由用户输入字符
- 大放送
- 初学者求教:用clientdataset如何连接本机access数据库(如XXX.mdb)
- 如何判断数据库连接与断开问题?
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)
祝你成功!