2016-04-26 54 views
0
select * from db.tab1 
where PROCESS_DT <= (select max(PROCESS_DT) - interval '72' month from db.tab1 

上面的查询给出了今年2月29日的错误,因为去年没有第29届FEB。此查询每天运行以清除12个月的数据。你能否提出另一种方法来避免2020年再次出现的问题?Teradat需要Sql修改

+0

365天为正规年,闰年为366年? – jarlh

+0

是的,就像@jarlh提到的那样,在WHERE子句中使用CASE表达式来区分你的where条件,当它是一个闰年而不是它的时候。我希望在Teradata中使用WHERE子句的CASE。 –

回答

1

您可以使用add_months代替:

select * 
from db.tab1 
where PROCESS_DT <= (select add_months(max(PROCESS_DT), - 72) from db.tab1)