Deluge脚本使用比较运算符对比入职日期与当前日期返回空值求解
问题原因&解决方案
核心原因
返回NULL主要来自两个问题:
- 逻辑错误:
Dateofjoining是员工入职日期,正常情况下已入职员工的入职日期都早于当前时间,你用>运算符匹配大于当前时间的记录,本身就没有符合条件的结果 - 类型不匹配:Deluge的
now函数返回的是带时分秒的datetime类型值,而Dateofjoining是存储格式为20-Nov-1979的纯日期类型字段,二者类型不一致会导致搜索条件匹配失效返回空
可行解决方案
方案1:调整对比逻辑+统一日期格式
如果你的需求是查询已经入职的员工,将运算符改为<,同时把当前时间转换为和Dateofjoining同格式的纯日期值:
searchMap1 = Map(); searchMap1.put("searchField","Dateofjoining"); searchMap1.put("searchOperator","<"); // 转换当前时间为纯日期,匹配字段存储格式 currentDate = today.toString("dd-MMM-yyyy"); searchMap1.put("searchText",currentDate);
如果是查询待入职(入职日期在未来)的员工,保留>运算符即可
方案2:显式转换字段类型对比(适用于复杂日期计算场景)
如果需要做更复杂的日期对比(比如查询入职满N年的员工),可以先拉取全量员工数据后再做本地日期转换对比:
// 先拉取所有员工数据,替换为你实际的表单查询语句 allEmployees = zoho.crm.getRecords("Employees"); // 示例:过滤入职满1年的员工 qualifiedEmployees = allEmployees.filter( (employee) => { joinDate = employee.get("Dateofjoining").toDate("dd-MMM-yyyy"); return joinDate.addYear(1) < today; } );
内容的提问来源于stack exchange,提问作者Codrut Dumbrava
相关产品推荐
相关产品推荐

