where 语句中前六个月的 Databricks SQL 语法

Databricks SQL syntax for previous six months in where statement

提问人:Samantha Clark 提问时间:2/18/2023 更新时间:11/18/2023 访问量:1273

问:

我试图弄清楚如何在 Databricks 中 SQL 查询的 where 语句中查找过去六个月的数据,但我在语法方面遇到很多问题。

现在我有:

Select * from table
where datediff(add_months(date_column, -6), date_column) = 1

查询不会引发错误,但不会返回任何结果。

Databricks-SQL

评论

0赞 nbk 2/18/2023
因此,如果我说得对,您有 01-01-2023 并且您删除了 6 m0nth,比如说 01-07-2022,您期望差异的数字为 1?datediff 的结果约为 180,绝不能为 1

答:

3赞 Tom Boyd 2/18/2023 #1

我认为您对 datediff 的期望是错误的。Datediff 告诉您两个日期之间的天数。就您而言,您正在将date_column与date_column进行比较 - 6 个月。这总是 6 个月或 ~180 天。

试试这个。

WHERE date_column > DATEADD(MONTH, -6, CURRENT_DATE())

AKA,其中您的日期列大于当前日期减去 6 个月。

评论

0赞 Samantha Clark 2/21/2023
CURRENT_DATE() 是我需要自己定义的函数吗?
0赞 Tom Boyd 2/22/2023
不。CURRENT_DATE() 返回今天的日期。如果选择 DATEADD(MONTH, -6, CURRENT_DATE()),它应该返回 6 个月前的日期。
0赞 Artem Yevtushenko 11/18/2023 #2

您也可以使用关键字。interval

where `date` >= date_trunc('MONTH', now()) - interval 7 month