SELECT COUNT(DISTINCT dbo.visitstate.visitip) AS count1 FROM dbo.visitstate WHERE year(visitdate)='2009'; 这个语句是选择2009年访问IP的数量(重复的只计算一次,visitip字段保存是访问ip的数据,visitdate是访问时间字段)
这个语句在vs2008中运行正常。因为年份是变化的,所以我改为过程参数来控制,@yearl int
SELECT COUNT(DISTINCT dbo.visitstate.visitip) AS count1 FROM dbo.visitstate WHERE year(visitdate)=@yearl; 在后台也给@yearl赋值了,过程应该没有错,但运行后提示我存储过程有语法错误,问题是在sql中运行成功,所以不知道错误发生在哪希望大家能帮我看下,大家一起提高
这个语句在vs2008中运行正常。因为年份是变化的,所以我改为过程参数来控制,@yearl int
SELECT COUNT(DISTINCT dbo.visitstate.visitip) AS count1 FROM dbo.visitstate WHERE year(visitdate)=@yearl; 在后台也给@yearl赋值了,过程应该没有错,但运行后提示我存储过程有语法错误,问题是在sql中运行成功,所以不知道错误发生在哪希望大家能帮我看下,大家一起提高
不知道是不是類型檢查,你試一下
--试一下,估计是类型错误。。
SELECT COUNT(DISTINCT dbo.visitstate.visitip) AS count1 FROM dbo.visitstate WHERE year(visitdate)=@yearl;visitstate 表名怎么和 字段 visitdate是一样的》???????
是不是,字段写错了!
WHERE year(visitdate)= cast(@yearl as varchar(50)
create procedure sp_test
@year1 int
as
begin
with tb(val) as
(
select '2009-10-01'
union all
select convert(varchar(10),dateadd(mm,1,convert(datetime,val)),120) from tb where val<='2010-10-09'
)
select row_number() over(order by getdate()) as id,tb.* from tb where year(convert(datetime,val)) = @year1
endexec sp_test 20092005下沒問題,懷疑你的存儲過程有問題