SQL Server:按日期范围提取会返回错误

时间:2014-06-25 13:28:36

标签: sql sql-server datetime stored-procedures dynamic

我有一个动态存储过程,其中包含以下输入变量和Where条件,其中R.dateRec列被格式化为datetime。

@rangeStart datetime,
@rangeEnd datetime

AND   R.dateRec BETWEEN ' + @rangeStart + ' AND ' + @rangeEnd + '

当我运行没有这个条件的程序而不是它运行良好但是当添加它时它返回以下错误,可能是因为它不能将值识别为日期:

Conversion failed when converting date and/or time from character string.

有人可以告诉我如何防止这种情况发生吗?有问题的列仅包含有效日期(无空格或NULL值)。

非常感谢蒂姆。

2 个答案:

答案 0 :(得分:2)

如果它是一个动态的sql ...

,需要先将日期参数转换为varchar

添加引号

{beginning of query...} + ' and R.dateRec between ''' + convert(varchar, @rangeStart, 111) + ''' and ''' + convert(varchar, @rangeEnd, 111) + ''' {continue query}'

答案 1 :(得分:0)

你错过了报价吗?即。

   AND   R.dateRec BETWEEN ''' + @rangeStart + ''' AND ''' + @rangeEnd + '''