2
DECLARE @i varchar(13)
DECLARE @Year varchar(30)

SET @i = 2
SET @Year = 2013

SELECT SUM(CAST([totalAfterMultiplier] as money)) as 'totalAfterMultiplier' FROM [postfinanceAfterMultiplier] 
                    WHERE CAST([ORDER] as date) >= '01/'+@i+'/'+ @Year +'' AND CAST([ORDER] as date) <= '31/'+@i+'/'+ @Year +''

我收到此错误:从字符串转换日期和/或时间时转换失败。

数据库中的所有值都是varchar(50)

我查看了其他帖子,但似乎无法正常工作

感谢大家的帮助

4

2 回答 2

2
  1. 不要将日期存储为 varchar。
  2. 如果要从字符串转换为日期'dd/mm/yyyy',请使用显式格式 103,例如 select convert(date, '01/12/2013', 103). 在此处查看其他格式 - CAST 和 CONVERT (Transact-SQL)
于 2013-10-24T09:57:57.037 回答
-1

我发现以下解决方案有效:

DECLARE @i varchar(13)
DECLARE @Year varchar(30)


SET @i = 2
SET @Year = 2013



SELECT SUM(CAST([totalAfterMultiplier] as money)) as 'totalAfterMultiplier' FROM [postfinanceAfterMultiplier] 
                    WHERE MONTH([ORDER]) = @i AND YEAR([ORDER]) = @Year
于 2013-10-24T10:44:29.833 回答