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

Power Query如何创建起始2021年8月1日步长30分钟的日历表

Power Query 30分钟间隔时间日历表实现方案

报错原因

触发报错的核心问题是类型不匹配:DateTime.Date(DateTime.LocalNow())返回的是Date类型,而用来做减法的起始值是#datetime生成的DateTime类型,Power Query不允许两种不同时间类型直接做减法运算。
除此之外你原代码的逻辑也存在问题:List.DateTimes的第二个参数是需要生成的时间点总数量,你原代码传入的是间隔天数,会导致生成的时间点数量远不足覆盖所有30分钟间隔。

完整可运行代码

let
    // 定义起始时间:2021年8月1日0点
    StartDateTime = #datetime(2021, 8, 1, 0, 0, 0),
    // 定义结束时间:当前本地时间
    EndDateTime = DateTime.LocalNow(),
    // 计算需要生成的30分钟间隔总数量,向上取整保证覆盖到当前时间
    IntervalCount = Number.RoundUp(Duration.TotalMinutes(EndDateTime - StartDateTime) / 30, 0),
    // 生成30分钟递增的时间序列
    DateTimeList = List.DateTimes(StartDateTime, IntervalCount, #duration(0, 0, 30, 0)),
    // 转换为表结构
    #"Converted to Table" = Table.FromList(DateTimeList, Splitter.SplitByNothing(), {"DateTime"}, null, ExtraValues.Error),
    // 可选步骤:将时间格式转为你示例要求的文本格式,不需要可删除
    #"Format DateTime" = Table.TransformColumns(#"Converted to Table", {{"DateTime", each DateTime.ToText(_, "MM/dd/yyyy hh:mm:ss tt"), type text}})
in
    #"Format DateTime"

逻辑说明

  • 所有运算统一使用DateTime类型,避免类型不匹配报错
  • 通过总分钟数除以30计算得到需要生成的时间点总数,保证从起始时间到当前时间所有30分钟间隔都被覆盖
  • 格式转换步骤为可选,删除后会保留原生DateTime类型,更适合后续和其他表做关联计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:18:04