2017-10-16 73 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

相關問題