Databricks上月数据查询:函数使用位置及数据提取疑问
在Databricks中提取上月数据的正确写法
要筛选仅上月的数据,过滤逻辑必须写在WHERE子句里,SELECT子句仅用于指定要展示的字段。以下是两种可靠实现方式:
方式1:通过日期范围精准匹配
利用date_trunc和last_day构造上月的起止日期,适合需要完整日期范围过滤的场景:
SELECT * FROM your_table WHERE your_date_column BETWEEN date_trunc('month', add_months(current_date(), -1)) AND last_day(add_months(current_date(), -1))
add_months(current_date(), -1):获取当前日期往前推1个月的日期date_trunc('month', ...):得到上月的第一天last_day(...):得到上月的最后一天
方式2:通过年月匹配
直接匹配记录的年、月与上月的年、月,适合只关注年月维度的场景:
SELECT * FROM your_table WHERE year(your_date_column) = year(add_months(current_date(), -1)) AND month(your_date_column) = month(add_months(current_date(), -1))
关于month(date, -1)的说明
你尝试的month(date, -1)是对单条记录的日期字段减1个月后取月份值,这并不是筛选上月数据的正确用法。如果要在结果中展示上月的月份数,才需要把类似逻辑放在SELECT子句,比如:
SELECT your_date_column, month(add_months(current_date(), -1)) AS last_month_number FROM your_table WHERE year(your_date_column) = year(add_months(current_date(), -1)) AND month(your_date_column) = month(add_months(current_date(), -1))
内容的提问来源于stack exchange,提问作者shosho88
相关产品推荐
相关产品推荐

