Oracle有一個last_day()
功能:甲骨文結束日期範圍內的月份值中
SELECT LAST_DAY(to_date('01/01/2016','DD/MM/YYYY')) from dual;
結果:
31/01/2016
我怎樣才能在一個日期範圍的使用EndOfMonths列表WHERE子句,目前我使用的是大串,這是不直觀,或者面向未來如:
SELECT * FROM Balances
WHERE TheDate IN
('31/Jan/2016','29/Feb/2016', '31/Mar/2016','30/Apr/2016', '31/May/2016','30/Jun/2016', '31/Jul/2016','31/Aug/2016',
'30/Sep/2016', '31/Oct/2016','30/Nov/2016')
我寧願我們e插入開始日期和結束日期的功能,非常感謝任何想法。
所以只是MONTHS_BETWEEN來完成它,我將修改你的答案,謝謝 –
'add_months'可以在第一個參數的月末使用,在這種情況下,它只返回月末。然後你可以將呼叫保存到'last_day()'。嘗試例如'select_add_months(last_day(sysdate),level)來自雙連接級別<= 12;'並根據需要進行調整。 – mathguy
進一步增強,如果輸入月末日期,可以消除'LAST_DAY',爲什麼我提到這是由於@mathguy的建議,並且它並不直接顯而易見,Oracle的ADD_MONTHS功能非常智能*並且在引擎蓋下進行了優化*,你可以使用2月28日或29日,4月30日但不是3月30日。偉大的團隊合作伙伴! –