2011-05-27 131 views
0

传递给存储过程的日期一个asp.net日期我试图作为参数传递的日期从asp.net与数据库中的日期比较的存储过程。但不能产生所需要的结果..比较作为参数数据库

我的查询如下:

  @date datetime 

     Select * from table 
     where (CONVERT(NVARCHAR,[date],112)=CONVERT(NVARCHAR,@date,112)) 

我没有问题,插入从asp.net参数传递的日期时,SQL Server需要的护理日期格式..

中的任何一个,请告诉我,我怎么能比这些日期..

回答

2

正确的方法做,这是

@date datetime 

Select * from table   
where [date] = @date 

编辑:如果你只是想在SQL2005比较日期组件(不包括时间),比较年,月,日。

Select * from table   
where DATEPART(YEAR, [date]) = DATEPART(YEAR, @date) 
and DATEPART(MONTH, [date]) = DATEPART(MONTH, @date) 
and DATEPART(DAY, [date]) = DATEPART(DAY, @date) 

我总是比较喜欢避免字符串比较。

+0

@Kirk,我只是想比较一下日期部分(时间部分可能不同)。我的日期字段的类型是日期时间(sql server 2005没有日期类型,我猜?)。 – Harun 2011-05-27 05:00:58

+1

@harun是SQL Server有日期时间,而不是日期而Mysql的有两个用于不同的日期时间和日期 – Devjosh 2011-05-27 05:04:19

+1

@Devjosh - SQL 2008有日期,但不是SQL 2005 – 2011-05-27 05:06:05

0

@harun你可以把你怎么样传递日期参数的日期代码你存储在DateTime类型的日期,所以当你写

CMD.Parameters.AddWithValue("@date",aspDate.tostring("MM/dd/yyyy"`); 

它会通过只有日期部分parameter.i我aassuming您的日期变量是日期时间

的SQL你可以提取日期像下面的例子

select convert(varchar(10),@date,101); 

希望这将有助于