2017-04-26 70 views
0

从SSRS 2012升级到2016年后,我们必须重新编写所有报告,因为SSRS给出ORA-01830的问题:日期格式图片在转换整个输入字符串之前结束。SSRS 2016 Oracle日期铸造失败

导致问题的代码如下:

WHERE (
    trunc(date_processed) BETWEEN NVL(:start_date,:subscription_start_date) AND NVL(:end_date,:subscription_end_date) 
) 

开始/ END_DATE都空在报告开始执行。 subscription_start/end_date从不为空,并且始终设置。为了让事情更令人沮丧的,以下工作正常:

WHERE (
    trunc(date_processed) BETWEEN NVL(:start_date ,'01-JAN-1848') AND NVL(:end_date,'31-DEC-2039') 
    and trunc(date_processed) BETWEEN :subscription_start_date and :subscription_end_date 
) 

的问题,然而,就是现在:当用户设置起始日期参数不能覆盖认购日期参数。

这在以前的版本中没有发生。这发生在我们拥有的所有报告中,这些并不是少数。

回答

0

将SSRS中的变量参数设置为文本并使用TO_DATE为我解决了类似的情况,我使用SSRS和Oracle源。

WHERE (trunc(date_processed) BETWEEN NVL(TO_DATE(:start_date,'mm/dd/yyyy'),TO_DATE(:subscription_‌start_date,'mm/dd/yy‌​yy')) AND NVL(TO_DATE(:end_date,'mm/dd/yyyy'),TO_DATE(:subscription_en‌​d_date, 'mm/dd/yyyy')) 
+0

可以添加一个示例代码 –

+0

WHERE( TRUNC(DATE_PROCESSED)BETWEEN NVL(TO_DATE(:起始日期, 'MM/DD/YYYY'),TO_DATE(:subscription_start_date, '毫米/日/年') )和NVL(TO_DATE(:end_date,'mm/dd/yyyy'),TO_DATE(:subscription_end_date,'mm/dd/yyyy') ) – user3096487