Sql 获取超出我指定范围的日期
我有一份报告,我正试图用SSRS修复它,因为当你在一个特定的范围内运行它时,比如说一年中的一个月。它也会给你所有以前的年份,即使它超出了参数范围Sql 获取超出我指定范围的日期,sql,reporting-services,plsql,Sql,Reporting Services,Plsql,我有一份报告,我正试图用SSRS修复它,因为当你在一个特定的范围内运行它时,比如说一年中的一个月。它也会给你所有以前的年份,即使它超出了参数范围 SELECT to_char(app.RECEIVED_DATE, 'mm-dd-yyyy') AS received_date , res.RESIDENCETYPE_NAME || ' - ' || act.ACTIONTYPE_NAME type , sts.APPLSTSTYPE_NAME AS Status
SELECT
to_char(app.RECEIVED_DATE, 'mm-dd-yyyy') AS received_date
, res.RESIDENCETYPE_NAME || ' - ' || act.ACTIONTYPE_NAME type
, sts.APPLSTSTYPE_NAME AS Status
, COUNT(*) AS Total_Count
FROM
ODILIC_ADMIN.LICENSEAPPL app
, ODILIC_ADMIN.LICENSEDEF def
, ODILIC_ADMIN.ACTIONTYPE act
, ODILIC_ADMIN.APPLSOURCE src
, ODILIC_ADMIN.RESIDENCETYPE res
, ODILIC_ADMIN.LICENSETYPE ltype
, ODILIC_ADMIN.LICENSINGENTITYTYPE etype
, ODILIC_ADMIN.APPLSTSTYPE sts
WHERE app.LICENSEDEF_ID = def.LICENSEDEF_ID
AND app.ACTIONTYPE_ID = act.ACTIONTYPE_ID
AND app.APPLSOURCE_ID = src.APPLSOURCE_ID
AND def.RESIDENCETYPE_ID = res.RESIDENCETYPE_ID
AND def.LICENSETYPE_ID = ltype.LICENSETYPE_ID
AND def.LICENSINGENTITYTYPE_ID = etype.LICENSINGENTITYTYPE_ID
AND app.APPLSTSTYPE_ID = sts.APPLSTSTYPE_ID
AND (app.RECEIVED_DATE BETWEEN '01-JUN-2013' AND '30-JUN-2013')
and sts.APPLSTSTYPE_NAME in ('Completed')
GROUP BY
to_char(app.RECEIVED_DATE, 'mm-dd-yyyy')
, res.RESIDENCETYPE_NAME
, act.ACTIONTYPE_NAME
, sts.APPLSTSTYPE_NAME
order by 1
因此,该查询将在今年6月1日和6月30日之间过滤。当我在plsql中运行它时,它工作正常,但一旦我将它放入ssrs,它将在这一行上为我提供2012年和2011年6月的计数:和(app.RECEIVED_日期介于“2013年6月1日”和“2013年6月30日”之间)
我将直接在SSRS中设置参数来处理此问题,因为这可能会更精确地处理类型转换,以指定(DateTime)为参数类型,然后将行更改为:
和(app.RECEIVED_日期介于@Start和@End之间)
我没有使用过带SSR的plsql,但我看到过类型转换在处理WCF和其他通道时遇到的问题。我通常的尝试是首先指定要传递到查询执行中的参数,并查看是否仍然存在问题 该行专门用于plsql检查数据是否正确。在ssrs中,这一行是:(to_char(app.RECEIVED_DATE,'mm/dd/yyyyy')介于to_char(:start_DATE,'mm/dd/yyyyy')和to_char(:end_DATE,'mm/dd/yyyyy')之间,无论出于何种原因,它只查看月份和日期,而不查看年份。如果您要将某些内容转换为char,这可能会成为一个问题,因为DateTime可以通过ssrs进行多种解释。我以为你只是在“选择”语句中做了一个角色转换,而不是where子句?我找到了一个解决办法,说AND(app.RECEIVED_DATE)>(:start_DATE)。我不明白为什么中间语句不适用于年份。