日期:2014-05-17  浏览次数:20465 次

写一个函数参数是DateTime,调用用字符串传不行,写死可以,是怎么回事?
写一个函数参数是DateTime,调用用字符串传不行,写成字符串可以可以,是怎么回事?
SQL code

……
--参数
@StartTime DateTime,--开始时间参数
@EndTime DateTime,--结束时间参数
……
--条件
WHERE StartTime>=@StartTime AND EndTime<=@EndTime --这样写执行不了

WHERE StartTime>='2009-1-1' AND EndTime<='2009-3-13' --这样写可以执行




------解决方案--------------------
SQL code
WHERE StartTime>=convert(varchar(10),@StartTime,120) AND EndTime<=convert(varchar(10),@EndTime,120)

------解决方案--------------------
LZ,可以将时间定义为CHAR(30)然后传进去就可以了。我以前是这样解决的。后来是convert(varchar(10),@StartTime,120)转换时间为字符类型。

--参数
@StartTime char(30),--开始时间参数
@EndTime char(30),--结束时间参数
……
--条件
WHERE StartTime>=@StartTime AND EndTime<=@EndTime --这样写执行不了

------解决方案--------------------
SQL code
declare
@StartTime DateTime,--开始时间参数
@EndTime DateTime--结束时间参数
select @StartTime='2009-01-11',@EndTime='2009-05-01'

if @StartTime>@EndTime
 print @StartTime
else if @StartTime<@EndTime
 print @EndTime
else 
 print null

--05  1 2009 12:00AM

------解决方案--------------------
其实存贮过程的参数设成字符型比较好。
因为如果是时间型,则参数传入时必须保证是datetime型呀。