我需要使用日期参数设计报告(需要采用英国日期格式)
原始日期格式: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
答案 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);