我有一个包含年份列和月份列的表。年是int,月是varchar,如“一月”所示。我正在创建一个报表,用户可以在其中简单地输入“结束”和“开始”日期。这是我的存储过程。
SQL
ALTER PROCEDURE [Servicing].[ManualAdjustments]
@dateFrom INT,
@dateTo VARCHAR(50)
AS
BEGIN
SELECT *
FROM MyDatabase.dbo.MyTable
WHERE RefYear BETWEEN CONVERT(DATE,YEAR(@dateFrom)) AND CONVERT(DATE,YEAR(@dateTo))
AND RefMonth BETWEEN CONVERT(DATE,MONTH(@dateFrom)) AND CONVERT(DATE,MONTH(@dateTo))
END
当我运行它时,它返回到“不允许从数据类型int显式转换为日期”。我不确定我在语法中做了什么错误。
我看过其他的例子,但是答案仅仅是基于askers问题,所以我发现很难找到解决问题的方法。
有什么想法吗?
编辑-我尝试过的
一
ALTER PROCEDURE [Servicing].[ManualAdjustments]
@dateFrom DATE,
@dateTo DATE
AS
BEGIN
SELECT *
FROM MyDatabase.dbo.MyTable
WHERE RefYear BETWEEN CONVERT(DATE,YEAR(@dateFrom),0) AND @dateTo
AND RefMonth BETWEEN CONVERT(DATE,MONTH(@dateFrom),0) AND @dateTo
END
--ERROR -> 'Explicit conversion from data type int to date is not allowed.'