繁体   English   中英

SSRS报告中的日期转换错误

[英]Date conversion error in SSRS Report

我需要使用日期参数来设计报告(需要采用英国日期格式)

原始日期格式:2007-11-30 00:00:00.000

因此,我在查询中使用了CONVERT(Date,Start_Date,103):2007-11-30。

现在,在设计报表时,我在主数据集查询中遇到此错误。

主要数据集查询:

SELECT Col1, Col2, Start_Date, Target_Date, Col3
FROM  Table
WHERE        (Col1 IN (@Param1))
AND (Col2IN (@Param2)) 
AND (Start_Date IN (@Start_Date)) AND (Target_Date IN (@Target_Date))

错误:从字符串转换日期和/或时间时转换失败

参数数据类型:日期/时间

Start_Date数据集:

SELECT        Col1, Col2, Start_Date
FROM          Table
WHERE        (Col1 IN (@Param1)) AND (Col2 IN (@Param2))

在查询参数中,我使用以下代码:

=iif(Parameters!Start_Date.Value is nothing,"1/1/1900",Parameters!Start_Date.Value)

O / P:无错误

Target_Date数据集(我想包含开始日期为NULL的目标日期,因此使用以下查询):

SELECT        Col1, Col2, Start_Date, Target_Date
FROM            Table
WHERE        (Col IN (@Param1)) AND (Col2 IN (@Param2)) AND (Start_Date = @Start_Date)
UNION ALL
SELECT        NULL AS Expr1, NULL AS Expr2, NULL AS Expr3, Target_Date
FROM          Table AS Table_1
WHERE        (Department IN (@Param1)) AND (Col2 IN (@Param2)) AND (@Start_Date IS NULL)

O / P:无错误

有人可以建议我要去哪里错吗?

谢谢,方舟

假设Start_Date和Target_Date是字符串类型,则可能有一个非日期格式的值。

您可以使用ISDATE()函数对此进行测试:

SELECT DISTINCT Start_Date 
FROM  Table
WHERE ISDATE(Start_Date) = 0

SELECT DISTINCT Target_Date  
FROM  Table
WHERE ISDATE(Target_Date ) = 0

然后由您决定如何处理无效数据。 我将使用以下排除它们:

SELECT Col1, Col2, Start_Date, Target_Date, Col3
FROM  Table
WHERE   ISDATE(Start_Date) = 1 
    AND ISDATE(Target_Date ) = 1 
    AND Col1 IN (@Param1)
    AND Col2IN (@Param2) 
    AND Start_Date IN (@Start_Date) 
    AND Target_Date IN (@Target_Date);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM