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。 –