问题
使用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])