始まり
基準の日からの年度での開始・終了日を取得したかった
4月での年度区切りとして知りたかったので…
考え方
開始 : 年(基準の日 -3ヶ月)+ ”04/01”
終了 : 年(基準の日 -3ヶ月 + 12ヶ月)+ ”03/31”
とりあえず次の年の場合も減算して前の年にして年度を求めるのが
基本のロジックで作りました
それで終了は逆に1年プラスする形にして算出
(「-3ヶ月 + 12ヶ月」でなくても「+9ヶ月」でもいいと思うけど…後で見た時にわけがわからなくなりそうなので…)
SQL文
SQL_SERVER
--* DataTitle 年度(SQL SERVER)
select
now_yyyymmdd as 現在日付
,CAST(CAST(YEAR(DATEADD(month, -3, A.now_yyyymmdd)) AS varchar ) + '/04/01' AS DATE) as 開始年度
,CAST(CAST(YEAR(DATEADD(month, -3 + 12, A.now_yyyymmdd)) AS varchar) + '/03/31' AS DATE) as 終了年度
from (select CAST('2015/05/01' AS DATE) as now_yyyymmdd) A
;
ORACLE
--* DataTitle 年度(ORACLE)
SELECT
now_yyyymmdd as 現在日付
,CAST(TO_CHAR(add_months(now_yyyymmdd, -3),'yyyy') || '/04/01' AS DATE) as 年度開始
,CAST(TO_CHAR(add_months(now_yyyymmdd, -3 + 12),'yyyy') || '/03/31' AS DATE) as 年度終了
FROM (SELECT CAST('2015/05/01' AS DATE) as now_yyyymmdd from dual )
;
#結果
'2015/05/01'の場合
現在日付 | 年度開始 | 年度終了 |
---|---|---|
2015/05/01 | 2015/04/01 | 2016/03/31 |
'2015/03/01'の場合
現在日付 | 年度開始 | 年度終了 |
---|---|---|
2015/03/01 | 2014/04/01 | 2015/03/31 |