首页 > 解决方案 > 有没有办法设置所有日期?

问题描述

我想知道,在 SQL/dbt 中有没有办法将所有日期设置为 >= 另一个日期?

假设我有一个“createdat”日期字段和一个“updatedat”日期字段。我在查询(多个 CTE)以及其他日期中多次使用它。我想确保所有使用的日期都小于上个月的最后一天(即 <= last_day(current_date()-30, month))。

有没有办法在查询的开头设置它?

标签: sqldatesetdbt

解决方案


这绝对可以做到。您需要将greatest()多个列的 与您想要的任何日期截止日期进行比较。

实际上,它将是:

select *
from {{ ref('some_table') }}
where greatest(created_at,updated_at) < date_trunc('month', current_date)

您显然可以根据需要向该查询添加任意数量的列。

注意:在某些仓库中,如果其中的任何列为空,则greatest返回。在这种情况下,您需要将每个日期与某个日期占位符合并,例如“1970-01-01”。null


推荐阅读