Crystal reports Crystal Reports-将月份和年份参数转换为命令WHERE子句的开始和结束日期

Crystal reports Crystal Reports-将月份和年份参数转换为命令WHERE子句的开始和结束日期,crystal-reports,crystal-reports-2008,Crystal Reports,Crystal Reports 2008,我需要在Crystal报表中创建月份和年份参数,并将它们转换为命令WHERE子句的开始日期和结束日期。我不能将selectexpert与公式一起使用,因为报表检索了大量数据,所以我需要在将其拉入CR之前限制数据 我有一个SQL语句,用于将varchar月份和年份转换为开始日期和结束日期: DECLARE @month varchar(2) DECLARE @year varchar(4) set @month= '12' set @year= '2019' select CAST(cast

我需要在Crystal报表中创建月份和年份参数,并将它们转换为命令WHERE子句的开始日期和结束日期。我不能将selectexpert与公式一起使用,因为报表检索了大量数据,所以我需要在将其拉入CR之前限制数据

我有一个SQL语句,用于将varchar月份和年份转换为开始日期和结束日期:

DECLARE @month varchar(2)
DECLARE @year varchar(4)

set @month= '12'
set @year= '2019'

select 
CAST(cast(@year + '-' + Cast(cast(@month as int) as varchar(20)) + '-01' as datetime) as DATE) as StartDate
,DATEADD(dd, -DAY(DATEADD(mm, 1, cast(@year + '-' + @month + '-01' as date))), DATEADD(mm, 1, cast(@year + '-' + @month + '-01' as date))) as EndDate
然后,我的CR命令将类似于:

select * from Table1 where Date between StartDate and EndDate
问题是我不知道如何在CR中创建参数来实现这一点。当我将它们创建为字符串数据类型时,会出现以下错误:

我也不能让用户输入开始和结束日期,需要月份和年份


谢谢您的帮助。

对我有效的答案是获取Crystal number参数并将其转换为varchar SQL变量。CR参数为下面的{?月}和{?年}

declare
@StartDate datetime,
@EndDate datetime

set @StartDate = cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date) 
set @EndDate = DATEADD(dd, -DAY(DATEADD(mm, 1, cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date))), DATEADD(mm, 1, cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date)))

select * from Table1 where Date bewteen @StartDate and @EndDate