- Home
- SQL Server
- [SQL Server]年度と年度上期の範囲と年度下期の範囲を求める
[SQL Server]年度と年度上期の範囲と年度下期の範囲を求める
- 2017/2/2
- SQL Server
- SQL, SQL Server, 今年度上期, 今年度下期, 年度末
- コメントを書く
年度の求め方と年度の上期、下期を求める。
考え方
年度は、普通の暦の3ヶ月後から始まる。
例えば、2016年度は2016年1月ではなく2016年4月から始まる。
なので、調べたい日付の年度は、その日から3ヶ月前の年となる。
上期:今年度の4月~9月
下期:今年度の10月~来年の3月
となる。
ソースコード例
1 2 3 4 5 6 7 8 |
DECLARE @Today datetime = GETDATE() SELECT FORMAT(DATEADD(month, -3, @Today),'yyyy') AS 今年度 ,FORMAT(DATEADD(month, -3, @Today),'yyyy/04') AS 今年度の上期の開始月 ,FORMAT(DATEADD(month, -3, @Today),'yyyy/09') AS 今年度の上期の終了月 ,FORMAT(DATEADD(month, -3, @Today),'yyyy/10') AS 今年度の下期の開始月 ,FORMAT(DATEADD(year, 1, DATEADD(month, -3, @Today)),'yyyy/03') AS 今年度の下期の終了月 |
実際の使用例(下期のデータを取得)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DECLARE -- 今日の日付 @Today datetime = GETDATE() DECLARE -- 今年度 @Nendo varchar(4) = FORMAT(DATEADD(month, -3, @Today),'yyyy') -- 今年度の上期の開始月 ,@KamiStart varchar(7) = FORMAT(DATEADD(month, -3, @Today),'yyyy/04') -- 今年度の上期の終了月 ,@KamiEnd varchar(7) = FORMAT(DATEADD(month, -3, @Today),'yyyy/09') -- 今年度の下期の開始月 ,@ShimoStart varchar(7) = FORMAT(DATEADD(month, -3, @Today),'yyyy/10') -- 今年度の下期の終了月 ,@ShimoEnd varchar(7) = FORMAT(DATEADD(year, 1, DATEADD(month, -3, @Today)),'yyyy/03') SELECT * FROM 売上実績 WHERE FORMAT(注文日,'yyyy/MM') BETWEEN @ShimoStart AND @ShimoEnd |
注意点
注意する点は、年度末(下期終了月)を求める場合
1 |
FORMAT(GETDATE(),'yyyy/03') |
とすると、例えば2017年の時点での「今年度(2016年度)の年度末」は「2017/03」となり問題ないが。
2016年の時点での「今年度(2016年度)の年度末」は「2016/03」となり2015年度の年度末となり、バグとなる。
3ヶ月引いて1年足すこと。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。