为什么不能用日期进行查询 (80分)

  • 主题发起人 主题发起人 冰之火
  • 开始时间 开始时间

冰之火

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL2000中创建一个存储过程
CREATE PROCEDURE sa.summaryaa
@begindate smalldatetime,@lastdate smalldatetime
AS
select 局向,月租,速率,客户类型,count(工单号) as 用户数
from dbo.adsl
where 申请日期 between @begindate and @lastdate
group by 局向,月租,速率,客户类型

一切正常,使用SQL查询分析器可以正常执行
为什么在DELPHI6中用ADO连接时老提示:
[microsoft][odbc sql server drive]没有执行可选特性

望各路大侠多多指教
 
我将SQL中的库导出到ACCESS中,
使用ADOQUERY,使用相同的SQL语句却可以执行
难道D6中的日期型数据和SQL2000中的不能互相赋值,但我输入数据的时候又都正常
真是奇怪,请各位大侠指教
 
建个别名
 
to 昱昱
能不能说的详细一点
 
在access中和在sqlserver中的语句是有点差别的
在access中可以先定义一个字符串,在字符串前后加#号来查询日期
 
我已经暂时解决这个问题了,使用了一次类型转换,难道D6的ADO中在使用参数
进行赋值时,DATETIEM类型的数据和SQL中的不能相识吗?真奇怪,希望各位大侠继续指教,
下面是我的解决办法:
CREATE PROCEDURE sa.summaryaa
@begindate varchar(16),@lastdate varchar(16)
AS
select 局向,月租,速率,客户类型,count(工单号) as 用户数
from dbo.adsl
where 申请日期 between convert(smalldatetime,@begindate) and convert(smalldatetime,@lastdate)
group by 局向,月租,速率,客户类型
 
是因为SQL2000中定义的类型和delphi6中的类型不匹配
 
你不用smalldatetime
将它转换为string看看
 
在access中,日期查询要用#
 
这是SQL问题不是DELPHI的问题,不信你执行存储过程传DATETIME类型参数看看
 
格式化日期串就可以了。
 
SQL在不同的数据中用法不一样,与delphi无关,你可参看Access 的联机帮助。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部