如何在Azure Data Flow中获取当月第一天
获取日期列当月第一天的正确方法
你之前的表达式存在两个关键问题:
- 错误加入了与当前月第一天的比较逻辑,导致非当前月的日期会返回null,完全不符合“任意日期都返回对应当月第一天”的需求;
- 依赖字符串截取拼接处理日期,容易因不同工具的
substring参数规则(比如起始索引是0还是1、参数是长度还是结束位置)出现意外错误。
下面是不同场景下的可靠替代方案:
数据库场景
MySQL/MariaDB
直接格式化日期为当月第一天:
DATE_FORMAT(Date, '%Y-%m-01')
或者通过日期计算得到:
LAST_DAY(DATE_SUB(Date, INTERVAL 1 MONTH)) + INTERVAL 1 DAY
PostgreSQL
使用DATE_TRUNC截断到月份维度,再转为日期类型:
DATE_TRUNC('month', "Date")::DATE
SQL Server
通过日期偏移计算得到当月第一天:
DATEADD(month, DATEDIFF(month, 0, "Date"), 0)
Power BI/DAX场景
直接提取日期的年、月分量,构造当月第一天:
DATE(YEAR(Date), MONTH(Date), 1)
Python Pandas场景
利用周期函数快速获取当月起始日期:
df['FirstDayOfMonth'] = df['Date'].dt.to_period('M').dt.start_time.dt.date
ETL工具(如Talend)场景
调用内置的日期工具函数:
TalendDate.getFirstDayOfMonth(row.Date)
核心原则是避免用字符串处理日期,直接使用对应工具的原生日期函数,既保证准确性,也能自动适配闰年、月份位数等边界情况。
内容的提问来源于stack exchange,提问作者AzSurya Teja
相关产品推荐
相关产品推荐

