我有一个保存的搜索,它查看销售订单上的自定义文本字段。自定义字段应包含一个ISO日期。我想获取该日期大于今天的所有记录。我的第一次尝试是使用以下公式尝试Formula(Date)
,并且条件“大于今天”]
TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD')
但是,当我尝试进行搜索时,这给了我一个“意外错误”。我发现这是因为并非每条记录都有一个ISO日期,有些不是空的,有些已经被编辑为包含一些非日期的数据。看来,如果有任何行返回错误,则整个保存的搜索将失败。因此,我想从搜索中排除所有未解析为日期的内容。但是,我找不到从TO_DATE
函数捕获异常的方法。目前,我有:
CASE WHEN REGEXP_LIKE({custbody_est_delivery},'(\d{4})-(\d{2})-(\d{2})') THEN TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD')ELSE TO_DATE('2099-12-31', 'YYYY-MM-DD') END
可以,但这是一个可怕的骇客,如果有人在字段“ 9999-99-99”中写。
如何在Netsuite保存的搜索公式中捕获异常?我正在寻找类似于以下伪代码的内容:
IFERROR(TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), <do something sensible>)
您可以使用NVL2
功能有条件地处理任何空字段值。
例如
NVL2({custbody_est_delivery}, TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), '')
请参阅标题为SQL Expressions
的帮助页面,以获取所有可用的公式函数。
我个人会说任何无效日期的字段值都是数据问题,应通过批量更新或CSV导入进行更正,并且应将验证规则添加到您的自定义字段中,以便不允许无效日期。