sql - SQL 中的转换日期错误

标签 sql datetime sql-server-2012

执行以下动态 SQL 语句时,出现错误:

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

[ReturnDate] 定义为 datetime@FromDate@ToDate 参数作为类型传递日期时间也是如此。我缺少什么?

Set @SQLString = 
   'Select 
        [ID], [ReturnDate], [PolicyNumber]
    From 
        Bil_ReturnsRepository   
    Where
        (' + @PolicyNumber + ' is null or  PolicyNumber =  (' + @PolicyNumber + ')) 
        and (ReturnDate) >= Convert(date, ' + @FromDate + ')) 
        and (ReturnDate) <= Convert(date, ' + @ToDate + '))
        and PaymentAmount > 0.00'

最佳答案

您可能正在使用 SQL Server。如果是这样,请学习使用sp_executesql 。它的功能之一是能够传递参数:

Set @SQLString = '
Select [ID], [ReturnDate], [PolicyNumber]
From Bil_ReturnsRepository   
Where (@PolicyNumber is null or PolicyNumber = @PolicyNumber) and
      (ReturnDate >= @p_FromDate) and
      (ReturnDate <= @p_ToDate) and
      PaymentAmount > 0.00
';

declare @p_fromdate date;
declare @p_todate date;

select @p_fromdate = convert(date, @fromdate),
       @p_todate = convert(date, @todate);

exec sp_executesql @sql,
                   N'@p_fromdate date, @p_todate date, @policynumber int',
                   @p_fromdate=@p_fromdate, @p_todate=@p_todate, @policynumber=@policynumber;

如果 @fromdate@todate 已经具有变量 @p_fromdate@p_todate 则不需要正确的类型。

关于sql - SQL 中的转换日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232450/

相关文章:

python - 从 Python 中的复杂字符串中检索日期

sql - 如何为每个用户获取具有最小值和最大值的唯一记录

sql-server - 尝试使用 switch case 语句获取单列数据

python - ISO 8601 日期时间应该使用连字符减号 (U+002D) 还是连字符 (U+2010)?

mysql - 通过行值的总和来限制 SQL

sql - 如何从电量记录中计算出用电量?

php - SQL试图根据年龄列中的年龄组创建排名列

scala 中的 java.util.Date 增量不一致

sql - 使用 EXISTS 时关键字附近的语法不正确

SQL 查询报告下一个日志条目之前的持续时间