转换失败时转换为nvarchar成int

转换失败时转换为nvarchar成int

问题描述:

我收到上述错误谁能请帮助什么是代码中的问题...转换失败时转换为nvarchar成int

P.YKey BETWEEN YEAR('''+ CONVERT(VARCHAR(50), @BDate, 103) +''') 
      AND YEAR('''+ CONVERT(VARCHAR(50), @eDate, 103) +''') 
    AND P.DCreation BETWEEN '''+ CONVERT(VARCHAR(50), @BDate, 103) +''' 
         AND '''+ CONVERT(VARCHAR(50), @eDate, 103) +'''' 

什么是@BDate,@eDate的类型?

更新: 由于两个变量的类型是DATETIME,转换不是必需的。

P.YKey BETWEEN YEAR(@BDate) 
      AND YEAR(@eDate) 
    AND P.DCreation BETWEEN @BDate 
         AND @eDate 
+0

DateTime @zhang – Rashi

,因为它似乎是你有兴趣的创建日期而已,还不是时候,我也投了日期时间日期。所以假设DCreation也是日期时间:

P.YKey BETWEEN YEAR(@BDate) 
      AND YEAR(@eDate) 
    AND cast(P.DCreation as date) BETWEEN cast(@BDate as date) 
           AND cast(@eDate as date)