2013-04-21 32 views
1

我根据一些数据,正在建一个查询,我需要能够添加@StartDate参数字符串中,但我得到以下错误如何在SQL字符串添加日期变量

从字符串转换日期和/或时间时转换失败。查询

部分是这样的:

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 
DECLARE @where = '' 
... 

SET @where = @where + '(initDate BETWEEN ' + @StartDate + ' AND ' + @EndDate + ')' 

我如何可以添加StartDateEndDate存在,而不会造成这个问题?我试过CONVERT(DATETIME, @StartDate),但得到了同样的问题

+0

你通过了什么字符串? – 2013-04-21 16:39:55

+0

像01/01/2010 12:00 AM – jedgard 2013-04-21 16:40:58

+0

你的例子是不明确的。哪一天是哪一天,哪一天是哪一天? – 2013-04-21 18:49:19

回答

2

试一下这个

SET @where = @where + '(initDate BETWEEN ' + convert(varchar(10),@StartDate,104) + ' AND ' + convert(varchar(10),@EndDate,104) + ')' 

OR

SET @where = @where + '(initDate BETWEEN ' + convert(varchar(10),@StartDate,106) + ' AND ' + convert(varchar(10),@EndDate,106) + ')' 
0

只需使用CAST or CONVERT到@StartDate和@EndDate更改为一个字符串。根据链接选择合适的方法,使您获得所需的精度级别。