0

我有一个保存的搜索,它查看销售订单上的自定义文本字段。自定义字段应包含 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

这行得通,但它是一个可怕的 hack,如果有人在该领域写 '9999-99-99' 会失败。

如何在 Netsuite 保存的搜索公式中捕获异常?我正在寻找类似下面的伪代码:

IFERROR(TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), <do something sensible>)
4

1 回答 1

1

您可以使用该NVL2函数有条件地处理任何空字段值。

例如

NVL2({custbody_est_delivery}, TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), '')

请参阅标题SQL Expressions为您可用的所有公式函数的帮助页面。

就我个人而言,我会说任何无效日期的字段值都是数据问题,应该通过大量更新或 CSV 导入来纠正,并且应该将验证规则添加到您的自定义字段中,这样就不允许出现无效日期。

于 2020-04-06T22:24:42.713 回答