【SQLServer】Datetime型のフィールドから「年」「月」「日」をそれぞれ抽出する方法

SQLServer

SQLServerでSQLを使ってDatetime型のフィールドから「年」「月」「日」の部分をそれぞれ抽出する方法を紹介してみようと思います。

Datetime型のフィールドから「年」「月」「日」を抽出する方法

「年」部分を取得する方法

YEAR()関数を使えばOKです。
例えば、”T_Data”というテーブルに次のようなデータが登録されている場合に、

“T_Data”テーブルの中身

次のようなSQLを実行すると

SELECT
DataID
,YEAR([datetime])
FROM T_Data

結果は次のようになります。

YEAR()の結果

「月」部分を取得する方法

MONTH()関数を使えばOKです。
例えば、”T_Data”というテーブルに次のようなデータが登録されている場合に、

“T_Data”テーブルの中身

次のようなSQLを実行すると

Select
DataID
,MONTH([datetime])
FROM T_Data

結果は次のようになります。

MONTH()の結果

「日」部分を取得する方法

DAY()関数を使えばOKです。
例えば、”T_Data”というテーブルに次のようなデータが登録されている場合に、

“T_Data”テーブルの中身

次のようなSQLを実行すると

Select
DataID
,DAY([datetime])
FROM T_Data

結果は次のようになります。

DAY()の結果

YEAR()とMONTH()を用いた例

上記で紹介したYEAR()やMONTH()を使うと、例えばDatetime型のフィールドから「年」「月」の部分をピックアップし、その組み合わせを一意で表示したりすることができます。

イメージ

例えば、”T_Data”というテーブルに次のようなデータが登録されている場合に、

“T_Data”テーブルの中身

次のようなSQLを実行すると

SELECT
CONVERT(varchar(MAX),PICK.[YEAR]) + '年' + CONVERT(varchar(MAX),PICK.[MONTH]) + '月' As YearMonth
FROM
(
SELECT
YEAR([datetime]) As [YEAR]
,MONTH([datetime]) As [MONTH]
FROM T_Data
GROUP BY YEAR([datetime]),MONTH([datetime])
) PICK
ORDER BY PICK.[YEAR] DESC, PICK.[MONTH] DESC

結果は次のようになります。

以上です。
参考になれば幸いです。

タイトルとURLをコピーしました