2017-10-16 51 views
0

我想列出具有无效日期的字段。目前我只能在下面的条件下检查日期有效性。DataStage - 列出具有无效日期的字段

If 
IsValid('%dd-%mm-%yyyy',ln_source_1.A_Date) or 
IsValid('%dd-%mm-%yyyy',ln_source_1.B_Date) or 
IsValid('%dd-%mm-%yyyy',ln_source_1.C_Date) 
then 1 else 0 

DATE TABLE

ID | A_Date | B_DATE | C_Date

001 | 16-10-2017 | 16-31-2017 | 16-10-017

002 | 61-10-2017 | 01-01-2017 | 16-10-2017

根据以上示例,B_Date和C_Date无效。那么,是否有可能列出如下所示的无效日期?

状态|无效日期|

001 | B_Date,C_Date |

002 | A_Date |

注:我有很多日期字段,以检查它的有效性和它的一些可以为null

感谢

回答

0

的所有IsValid的功能,首先需要调用是这样的:

IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy") 

您的结果示例不清楚,因为您的第二列显示日期,但您列出的是列名。 连接可能是一个选项,具体取决于“许多日期fiels”的数量。

你可以走了Stagevariable

svInvalid =>设置为 “”

svValid =>设置为 “”

,做这样的检查(假设所有的输入和外野是VARCHAR数据类型)

IF IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy") 
THEN svValid : "A_DATE, " 
ELSE svInvalid : "A_DATE, " 

在输出列分配svValid到一个新的有效的列和svInavalid到新无效的列。

+0

是的,我想知道哪个列有无效的日期,所以'日期'应该有列名称。 – Kiki

+0

那你有没有试过我的建议? – MichaelTiefenbacher