問題
使用IsValid函數檢查日期是否有效時,如果日期無效,該函數將引發警告。在DataStage 7版本和8.1版本中,沒有警告,但在v8.5及更高版本中,出現警告。
示例:
場景1:
StageVar = 20141231
If IsValidDate("2014-12-31")
Then "Valid"
else "InValid"
此時無日誌警告
場景2:
StageVar = 20143112
If IsValidDate("2014-31-12")
Then "Valid"
else "InValid"
此時將產生警告信息"Conversion error calling conversion routine date_from_ustring data may have been lost"
場景3:
StageVar = 20143112
If IsValidDate(StringToDate( "2014-31-12" ,"%yyyy-%mm-%dd"))
Then "Valid"
else "InValid"
此時將產生警告信息" APT_CombinedOperatorController,1: Conversion error calling conversion routine date_from_string data may have been lost"
原因
使用 IsValidDate或IsValid("date",StringToDate(string,"%mm/%dd/%yyyy") )會出現警告消息,因爲它試圖在實際檢查之前將無效的字符串值轉換爲日期。
解決問題
要解決此問題,請使用以下函數:
IsValid ("date", String1[1,4]:"-":String1[5,2]:"-":String1[7,2])