2016-04-26 72 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)