新建表CREATE TABLE [dbo].[t_mz_record](
[name] [varchar](20) NULL,
[sex] [int] NULL,
[age] [int] NULL,
[recdate] [datetime] NULL
),插入几条相应的数据
insert into t_mz_record values('张三',1,24,'2013-01-18')
insert into t_mz_record values('李四',1,27,'2013-01-13')
insert into t_mz_record values('王吟',2,22,'2013-02-13')
insert into t_mz_record values('神女',2,35,'2013-03-13')
insert into t_mz_record values('专家',1,45,'2013-03-12')
,然后写了个存储过程,并且创建成功了
create procedure dbo.lixiu
@sdate datetime,
@edate datetime
as
declare @start datetime
declare @stop datetime
select name 姓名,(case when sex=1 then '男' else '女' end)sex ,age 年龄,recdate 记录日期 from t_mz_record
where recdate between @start and @stop and @start=@sdate and @stop=@edate
order by recdate;
调用存储过程:exec lixiu '2013-01-11','2013-02-19'
但是查出来是空数据,求教!
存储
分享到:
------解决方案-------------------- declare @start datetime
declare @stop datetime
select name 姓名,(case when sex=1 then '男' else '女' end)sex ,age 年龄,recdate 记录日期 from t_mz_record
where recdate between @start and @stop and @start=@sdate and @stop=@edate
你的@start ,@stop 没有赋值,所以出来控数据。
------解决方案-------------------- 这段条件多余:and @start=@sdate and @stop=@edate
把它去掉就可以工作正常,按照一段日期赛选记录了。 ------解决方案--------------------
参考楼上的答案 ------解决方案-------------------- create procedure dbo.lixiu
@sdate datetime,
@edate datetime这里定义的是外面传进来的参数;
as
declare @start datetime
declare @stop datetime这里定义的是存储过程内部使用的参数,和外面传进来的不一样。 ------解决方案-------------------- where recdate between @start and @stop and @start=@sdate and @stop=@edate
这句直接改成
where recdate between @sdate and @edate ------解决方案-------------------- 你的where条件可以看作3个条件的联合
(recdate between @start and @stop )and (@start=@sdate) and( @stop=@edate)