Teradata当前年份和第一年

时间:2019-03-18 09:16:07

标签: sql teradata

如何获取查询条件中的动态年份,我需要获取2017、2018、2019的数据,目前我正在对其进行硬编码(而在(2017、2018、2019)中的FSC_YR则需要动态方式。如何在Teradata中做到这一点。 我尝试了提取(从current_date的年)-2,提取(从current_date的年)-1,提取(从current_date的年)-3)。我收到太多错误的表达。

1 个答案:

答案 0 :(得分:2)

由于要查找一定范围的年份,为什么不只使用BETWEEN?

SELECT * 
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date - interval '2' year) AND EXTRACT(year FROM current_date)

但是正如@dnoeth在评论中指出的。
为了避免在2月29日运行该错误时,使用INTERVAL可能不是最安全的方法。

但是,仅从年份中减去并不是很糟糕。

SELECT * 
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date)-2 AND EXTRACT(year FROM current_date)

还要注意,这种错误可能是由于在查询中为IN选择了多于一列的原因

例如,这将失败:

SELECT * FROM Table1 
WHERE Col1 IN (SELECT Col1, Col2 FROM Tabel2)

因此,如果您将查询用于带有*的数据,那么仍然会导致该错误。