MONTH()関数とYEAR()関数を使ってDateTime型から月と年を取得する方法
SQL Server 2005でDateTime型から月と年を取得するには、以下の2つの方法があります。
- DATEPART関数を使う
- CONVERT関数を使う
DATEPART関数は、DateTime型から指定された日付要素を抽出します。月を取得するにはMONTH、年を取得するにはYEARを使用します。
SELECT DATEPART(MONTH, '2024-04-03') AS 月,
DATEPART(YEAR, '2024-04-03') AS 年;
この例では、以下の結果が返されます。
月: 4
年: 2024
CONVERT関数は、データを別のデータ型に変換します。DateTime型を文字列に変換し、SUBSTRING関数を使って月と年を取得する方法もあります。
SELECT SUBSTRING(CONVERT(VARCHAR(10), '2024-04-03', 121), 6, 2) AS 月,
SUBSTRING(CONVERT(VARCHAR(10), '2024-04-03', 121), 1, 4) AS 年;
月: 04
年: 2024
どちらの方法を使うかは、状況によって異なります。DATEPART関数はシンプルで分かりやすいですが、CONVERT関数はより多くの書式オプションを提供します。
補足
- 上記の例では、'2024-04-03'という文字列を直接クエリで使用しています。実際の運用では、テーブルのカラムなどからDateTime型を取得する必要があります。
- 上記の例では、月と年を別々の列として取得しています。月と年を1つの列に結合したい場合は、CONCAT関数などを使用します。
-- テーブル作成
CREATE TABLE dbo.Test (
ID INT IDENTITY(1, 1) PRIMARY KEY,
DateTime datetime
);
-- データ挿入
INSERT INTO dbo.Test (DateTime) VALUES ('2024-04-03');
-- DATEPART関数を使う
SELECT DATEPART(MONTH, DateTime) AS 月,
DATEPART(YEAR, DateTime) AS 年
FROM dbo.Test;
-- CONVERT関数を使う
SELECT SUBSTRING(CONVERT(VARCHAR(10), DateTime, 121), 6, 2) AS 月,
SUBSTRING(CONVERT(VARCHAR(10), DateTime, 121), 1, 4) AS 年
FROM dbo.Test;
月 | 年
------- | --------
4 | 2024
月 | 年
------- | --------
04 | 2024
解説
上記のサンプルコードでは、以下の処理を行っています。
- テーブル
dbo.Test
を作成します。 - テーブル
dbo.Test
にデータ'2024-04-03'
を挿入します。 - DATEPART関数を使って、
DateTime
カラムから月と年を取得します。
SQL Server 2005でDateTime型から月と年を取得する他の方法
MONTH()関数とYEAR()関数は、DateTime型からそれぞれ月と年を取得します。
SELECT MONTH('2024-04-03') AS 月,
YEAR('2024-04-03') AS 年;
DATEADD関数を使って、DateTime型から月または年を加減することで、月と年を取得できます。
SELECT DATEADD(MONTH, -1, '2024-04-03') AS 前月,
DATEADD(YEAR, -1, '2024-04-03') AS 前年;
CASE式を使って、DateTime型の値に基づいて月と年を取得できます。
SELECT CASE WHEN MONTH('2024-04-03') = 1 THEN '1月'
WHEN MONTH('2024-04-03') = 2 THEN '2月'
ELSE 'その他'
END AS 月,
YEAR('2024-04-03') AS 年;
- シンプルな方法で月と年を取得したい場合は、MONTH()関数とYEAR()関数を使うのがおすすめです。
- 月または年を加減したい場合は、DATEADD関数を使うのがおすすめです。
- DateTime型の値に基づいて月と年を取得したい場合は、CASE式を使うのがおすすめです。
sql sql-server