トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-273 年度の開始日を求める

SQLパズル

target
----------
2009-01-01
2009-09-01
2009-10-01
2009-12-01

10月1日を年度の開始日として、
target列の日付以下で最新の、年度の開始日を求める。

出力結果
target      OCT
----------  ----------
2009-01-01  2008-10-01
2009-09-01  2008-10-01
2009-10-01  2009-10-01
2009-12-01  2009-10-01

こちらを参考にさせていただきました(英語)


SQL

select column_value as target,
add_months(trunc(add_months(column_value,-9),'yyyy'),9) as oct
from table(sys.odciDateList(
date '2009-01-01',date '2009-09-01',
date '2009-10-01',date '2009-12-01'));


解説

add_months関数で9ケ月減算して、
trunc関数で切り捨てて、
add_months関数で9ケ月加算してます。