You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Automate中实现Excel短日期与当前日期的条件比较?

问题

我把Excel里名为Date的ShortDate字段导入Power Automate,想设置条件把这个字段和当前日期对比,但试了好几种方法都失败了。当前日期是2025年3月25日,Excel里存的是45741,测试情况如下:

  • "Date" "is equal to" "45741"(带引号)判断为True;
  • "Date" "is equal to" 45741(不带引号)判断为False;
  • "Date" "is equal to" utcNow()判断为False;
  • "Date" "is equal to" utcNow('yyyy-MM-dd')判断为False。

请问正确的比较语法是什么?看起来系统好像期望字符串格式?

更新说明:我在Excel表格里新增了DateYYYYMMDD列,用公式=TEXT([@Date], "YYYYMMDD")把日期转成"20250325"格式,然后在Power Automate里用这个字段和utcNow('yyyyMMdd')对比,成功实现了需求。能不能直接在Power Automate里执行类似TEXT()的转换操作?不想在Excel里新增列。

解决方案

完全可以直接在Power Automate里完成日期格式转换,无需修改Excel表格,核心是让两边的对比值类型、格式统一,以下两种方式都可行:

方式1:将Excel日期序列号转为标准日期字符串对比

Power Automate可通过addDays()+formatDateTime()组合函数,把Excel返回的字符串类型序列号转成目标格式:

formatDateTime(addDays('1899-12-30', int(triggerBody()?['Date'])), 'yyyyMMdd')
  • 先用int()把Excel返回的字符串序列号转成数字;
  • 再用addDays()基于Excel日期起点(1899-12-30,对应序列号0)计算出实际日期;
  • 最后用formatDateTime()转成"YYYYMMDD"格式字符串,和utcNow('yyyyMMdd')做相等判断即可。

方式2:将当前日期转为Excel序列号对比

反过来,把当前日期转成Excel的序列号字符串,再和Excel返回的Date字段直接对比:

string(sub(ticks(utcNow('yyyy-MM-dd')), ticks('1899-12-30'))/(864000000000))
  • 通过ticks()计算当前日期与Excel起始日期的时间差;
  • 除以一天的ticks总数(864000000000)得到序列号;
  • 转成字符串后和Excel返回的"45741"做相等判断。

补充说明

你之前的测试结果差异,本质是类型不匹配导致:

  • Excel的ShortDate字段导入Power Automate后是字符串类型的序列号,带引号的"45741"是同类型对比,所以判断为True;
  • 不带引号的45741是数字类型,和字段类型不匹配,判断为False;
  • utcNow()返回日期时间对象,utcNow('yyyy-MM-dd')是标准日期字符串,都和Excel序列号的字符串格式完全不同,因此判断为False。

内容的提问来源于stack exchange,提问作者MrSnrub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:32:41