2017-12-30 55 views
0

2月の月Teradataのインターバル機能

SELECT Cast('2017-12-29' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2017-12-30' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2017-12-31' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2018-12-29' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2018-12-30' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2018-12-31' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2019-12-29' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2019-12-30' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2019-12-31' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2020-12-30' as date) - INTERVAL '10' MONTH; 
SELECT Cast('2020-12-31' as date) - INTERVAL '10' MONTH; 

または

SELECT CURRENT_DATE - INTERVAL '10' MONTH;-- << If current date is 29,30,31 day of December month Non leap year and 30,31 day of December month leap year>> 
+1

どのように「失敗するのですか?エラーメッセージは何ですか? –

+1

10ヶ月後にお願いしています。しかし、2月に「31」日が存在しないので、あなたは「無効な日付」を取得します。私はそれがうまくいっているので、2020年12月29日があなたのリストに載っていないのではないかと推測しています。あなたが知っていたように、add_monthsは異なる月の末日を使用して、到達不可能な日数を計算します。 – ULick

答えて

1

使用ADD_MONTHS機能の代わりに、インターバル関数に日付を導出するためのMONTH仕様で使用した場合、INTERVALを内蔵機能を使用中のTeradataが失敗しました..

SELECT ADD_MONTHS(CAST ('2017-12-29' AS DATE),-10); 
SELECT ADD_MONTHS(CURRENT_DATE,-10); -- << If current date is 29,30,31 day of December month Non leap year and 30,31 day of December month leap year>> 
関連する問題