Power Query:动态筛选本年年初至今日的日期数据
动态筛选本年年初至今日数据的实现方案
1. SQL 环境(覆盖MySQL、SQL Server、PostgreSQL)
不同数据库用内置日期函数生成动态的年初和今日日期,每次查询会自动刷新范围:
MySQL/MariaDB
SELECT * FROM 你的表名 WHERE 日期列 >= DATE_FORMAT(CURDATE(), '%Y-01-01') AND 日期列 <= CURDATE();
CURDATE()自动获取当前系统日期DATE_FORMAT(CURDATE(), '%Y-01-01')动态生成当年1月1日
SQL Server
SELECT * FROM 你的表名 WHERE 日期列 >= DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AND 日期列 <= CAST(GETDATE() AS DATE);
GETDATE()获取当前时间,CAST(GETDATE() AS DATE)仅保留日期部分DATEFROMPARTS(YEAR(GETDATE()),1,1)生成当年年初
PostgreSQL
SELECT * FROM 你的表名 WHERE 日期列 >= DATE_TRUNC('year', CURRENT_DATE)::DATE AND 日期列 <= CURRENT_DATE;
CURRENT_DATE取当前日期,DATE_TRUNC('year', ...)截断到当年年初
2. Excel/Power Query
用Power Query实现动态刷新:
- 选中日期列,进入「数据」选项卡→「从表格/区域」打开Power Query编辑器
- 设置筛选规则:
- 点击「开始」选项卡的「高级筛选」
- 日期列 >=
#date(Date.Year(DateTime.LocalNow()),1,1)(动态当年年初) - 日期列 <=
Date.From(DateTime.LocalNow())(动态今日)
- 关闭并上载数据,右键点击表格选择「刷新」即可更新范围
3. Tableau
设置动态筛选器:
- 将日期列拖入「筛选器」,选择「日期范围」→「自定义」
- 「开始日期」选「相对日期」→「本年的开始」
- 「结束日期」选「相对日期」→「今天」
- 每次打开工作簿或刷新数据,筛选范围会自动同步当前日期
常见问题排查
- 用
currentday失败大概率是函数名错误(SQL对应CURDATE()/GETDATE(),Excel对应TODAY()) - 确保日期列是日期类型而非文本格式,否则筛选逻辑会失效
内容的提问来源于stack exchange,提问作者Anastasia Apostolou
相关产品推荐
相关产品推荐

