LoginSignup
7
6

More than 5 years have passed since last update.

日付から年度の開始日終了日を求める

Last updated at Posted at 2015-12-07

始まり

基準の日からの年度での開始・終了日を取得したかった
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
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6