SSRS报告中的日期转换错误

时间:2016-01-20 13:51:00

标签: tsql date reporting-services

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

原始日期格式: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:没有错误

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

谢谢, ARK

1 个答案:

答案 0 :(得分:0)

假设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);