Azure Data Factory数据流中整数日期与currentDate()相减问题咨询
问题原因
你之前的写法返回空列的核心原因是toDate()函数默认无法自动识别yyyyMMdd格式的整数/字符串类型日期输入,必须显式指定匹配的日期格式才能完成正确转换。同时Azure Data Factory数据流中计算两个日期的天数差,推荐使用内置的datediff()函数,避免直接做减法可能出现的类型兼容问题。
正确实现步骤
场景1:MinWADAT为整数类型(你的场景匹配该情况)
直接使用如下派生列表达式即可:
datediff(toDate(toString(MinWADAT), 'yyyyMMdd'), currentDate())
场景2:MinWADAT为字符串类型
可以省略转字符串的步骤:
datediff(toDate(MinWADAT, 'yyyyMMdd'), currentDate())
补充说明
- 上述表达式返回的是MinWADAT到当前日期的正天数差值,如果你需要MinWADAT减去currentDate的负数结果,调换
datediff函数内两个日期的参数顺序即可。 - 如果MinWADAT存在非法的日期数值(比如20231301、20230230等),可以增加合法性判断避免返回空值,示例如下:
iif( isDate(toString(MinWADAT), 'yyyyMMdd'), datediff(toDate(toString(MinWADAT), 'yyyyMMdd'), currentDate()), -1 // 非法日期返回的默认值,可自行调整 )
内容的提问来源于stack exchange,提问作者Pollux
相关产品推荐
相关产品推荐

