年度を計算する方法、年度の開始月を計算する方法
スポンサーリンク
SQL Server 2008 R2 では年度を計算する関数は用意されていないため、以下のように計算します。
- 月が 1 ~ 3 の場合は、年から 1 差し引く。
- 上記以外の場合は年をそのまま使用する。
計算した年度に文字列 '04' を追加すれば、YYYYMM 形式の年度開始月を取得することができます。
年度を計算するサンプル SQL
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --テーブル変数(@MY_DATE)を宣言 DECLARE @MY_DATE TABLE( MY_DATETIME DATETIME ); -- テスト用の日付データーを挿入 INSERT INTO @MY_DATE VALUES --2015/01 ~ 2015/12 ('2015/01/05'), ('2015/02/08'), ('2015/03/15'), ('2015/04/18'), ('2015/05/20'), ('2015/06/25'), ('2015/07/26'), ('2015/08/31'), ('2015/09/01'), ('2015/10/30'), ('2015/11/02'), ('2015/12/15'); -- 年度の計算 SELECT MY_DATETIME --1月~3月であれば、年から1差し引く。 --それ以外の場合は年をそのまま取得。 , CASE WHEN MONTH(MY_DATETIME) <= 3 THEN YEAR(MY_DATETIME) - 1 ELSE YEAR(MY_DATETIME) END FROM @MY_DATE |
年度の開始月を計算するサンプル SQL
年度の開始月は上記で計算した年度に 4 月を表す 04 を追加すれば計算できます。 但し、上記で計算した年度は数値なので、事前に CONVERT 関数で文字列に変換する必要があります。
実際のサンプルコードは以下の通りです。
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | --テーブル変数(@MY_DATE)を宣言 DECLARE @MY_DATE TABLE( MY_DATETIME DATETIME ); -- テスト用の日付データーを挿入 INSERT INTO @MY_DATE VALUES --2015/01 ~ 2015/12 ('2015/01/05'), ('2015/02/08'), ('2015/03/15'), ('2015/04/18'), ('2015/05/20'), ('2015/06/25'), ('2015/07/26'), ('2015/08/31'), ('2015/09/01'), ('2015/10/30'), ('2015/11/02'), ('2015/12/15'); --年度の計算。1月~3月であれば、年から1差し引く。 --それ以外の場合は年をそのまま取得。 SELECT MY_DATETIME --年度の開始月を YYYYMM 形式の文字列で取得 , CONVERT(VARCHAR, CASE WHEN MONTH(MY_DATETIME) <= 3 THEN YEAR(MY_DATETIME) - 1 ELSE YEAR(MY_DATETIME) END ) + '04' FROM @MY_DATE |
スポンサーリンク