Snowflake SQL:有没有办法选择2年前和当前日期之间的记录



我看到了很多类似的问题,但我还没有看到一个详细介绍如何获取两年前到今天的记录,但包括两年前的年初。这意味着我想创建一个函数,从两年前的1月1日起,它会一直给我结果。今年的结果将于2020年1月1日至今天公布。

到目前为止,这就是我所拥有的,但实际上我正在将它用作查询中的临时表。

SELECT * 
FROM final
WHERE order_date BETWEEN DATEADD(‘year’, -2, current_date) AND current_date 

您可以使用DATE_TRUNCDATEADD的组合来查找两年前的1月1日。

SELECT * 
FROM final
WHERE order_date BETWEEN DATE_TRUNC('year', DATEADD('year', -2, current_date)) AND current_date;

您所拥有的一切都很接近。只需截断年份。

你可以单独看到发生了什么:

select trunc('2021-03-14 08:24:12'::timestamp, 'YEAR');
-- Output: 2021-01-01 00:00:00.000

添加到您的SQL:

SELECT * 
FROM final
WHERE order_date 
BETWEEN trunc(DATEADD(‘year’, -2, current_date), 'YEAR') AND current_date 

可以使用date_FROM_PARTS:构造任意日期

从表示年、月和日的单个数字组件创建日期。

DATE_FROM_PARTS( <year>, <month>, <day> )

对于当前日期:

SELECT DATE_FROM_PARTS(YEAR(current_date)-2,1,1);
-- 2020-01-01

完整查询:

SELECT *
FROM final
WHERE order_date BETWEEN DATE_FROM_PARTS(YEAR(current_date)-2,1,1) AND current_date 

这应该足够了

where year(current_date)-year(order_date)<=2

但如果您有来自未来的订单日期

where year(current_date)-year(order_date)<=2 and order_date<=current_date 

最新更新