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修改
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修改
您可以使用add_months
代替:
select *
from db.tab1
where PROCESS_DT <= (select add_months(max(PROCESS_DT), - 72) from db.tab1)
365天为正规年,闰年为366年? – jarlh
是的,就像@jarlh提到的那样,在WHERE子句中使用CASE表达式来区分你的where条件,当它是一个闰年而不是它的时候。我希望在Teradata中使用WHERE子句的CASE。 –