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. string から date に変換する場合は'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 に答える