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

Databricks SQL WHERE子句中查询近6个月数据的语法问题

问题分析与解决

你的查询语句没返回结果,核心是WHERE子句的逻辑完全错误:

  1. 先明确datediff的参数规则:Databricks SQL中datediff(endDate, startDate)返回的是endDate减去startDate的天数差。你写的datediff(add_months(date_column, -6), date_column)里,add_months(date_column, -6)是把date_column往前推6个月的日期(比原日期更早),用更早的日期作为endDate、原日期作为startDate,得到的结果是负数,永远不可能等于1,自然查不到数据。

  2. 要筛选近6个月的数据,分两种常见场景:

场景1:筛选当前日期往前推6个月至今的记录

这是最常用的需求,用current_date()获取当前日期,往前推6个月作为筛选下限:

SELECT * 
FROM table
WHERE date_column >= add_months(current_date(), -6)

场景2:筛选每条记录date_column自身往前推6个月内的区间(无实际筛选意义,仅逻辑说明)

如果是想取每条记录对应的过去6个月范围,这个条件其实永远成立(除非date_column为null),写法如下:

SELECT * 
FROM table
WHERE date_column >= add_months(date_column, -6)

补充:如果你的date_column是带时间戳的字段,也可以用current_timestamp()替代current_date(),保证字段类型匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:24:20