SQL Server 2005/2008で曜日を取得する:5つの方法
SQL Server 2005/2008でdatetime
型の列から曜日を取得するには、いくつかの方法があります。
- DATEPART関数
- CASE式
それぞれの特徴と使い分けについて説明します。
DATEPART関数は、日付/時刻の各部分 (年、月、日、時、分、秒など) を取得するために使用されます。曜日を取得するには、dw
パラメータを使用します。
SELECT DATEPART(dw, '2024-03-30') AS 曜日;
この例では、2024-03-30
の曜日が取得されます。結果は 6
で、これは土曜日を表します。
DATETIME_PART関数は、DATEPART関数と同様ですが、より多くのオプションを提供しています。曜日を取得するには、weekday
パラメータを使用します。
SELECT DATETIME_PART(weekday, '2024-03-30') AS 曜日;
CASE式は、条件に基づいて異なる値を返すために使用できます。曜日を取得するには、以下の例のように記述します。
SELECT CASE DATEPART(dw, '2024-03-30')
WHEN 1 THEN '月曜日'
WHEN 2 THEN '火曜日'
WHEN 3 THEN '水曜日'
WHEN 4 THEN '木曜日'
WHEN 5 THEN '金曜日'
WHEN 6 THEN '土曜日'
ELSE '日曜日'
END AS 曜日;
この例では、2024-03-30
の曜日が文字列で取得されます。
- 簡単な方法で曜日を取得したい場合は、DATEPART関数を使用します。
- より多くのオプションが必要な場合は、DATETIME_PART関数を使用します。
- 曜日を文字列で取得したい場合は、CASE式を使用します。
- DATEPART関数とDATETIME_PART関数は、日付/時刻の他の部分を取得するためにも使用できます。
- CASE式は、曜日以外にも様々な条件に基づいて値を返すために使用できます。
-- DATEPART関数
SELECT DATEPART(dw, '2024-03-30') AS 曜日;
-- DATETIME_PART関数
SELECT DATETIME_PART(weekday, '2024-03-30') AS 曜日;
-- CASE式
SELECT CASE DATEPART(dw, '2024-03-30')
WHEN 1 THEN '月曜日'
WHEN 2 THEN '火曜日'
WHEN 3 THEN '水曜日'
WHEN 4 THEN '木曜日'
WHEN 5 THEN '金曜日'
WHEN 6 THEN '土曜日'
ELSE '日曜日'
END AS 曜日;
このコードを実行すると、以下の結果が出力されます。
曜日
-------
6
7
土曜日
実行環境
- SQL Server 2005/2008
注意事項
- このコードは、サンプルコードです。実際の環境に合わせて変更する必要があります。
- DATEPART関数とDATETIME_PART関数は、ロケールによって異なる結果を返す可能性があります。
SQL Server 2005/2008で曜日を取得するその他の方法
DATEDIFF関数と曜日テーブルを使用して、曜日を取得することができます。
手順
- 曜日テーブルを作成します。
CREATE TABLE 曜日 (
曜日_ID INT NOT NULL,
曜日_名 VARCHAR(10) NOT NULL
);
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (1, '月曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (2, '火曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (3, '水曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (4, '木曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (5, '金曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (6, '土曜日');
INSERT INTO 曜日 (曜日_ID, 曜日_名) VALUES (7, '日曜日');
例
SELECT 曜日_名
FROM 曜日
WHERE 曜日_ID = DATEDIFF(dd, '1900-01-01', '2024-03-30') + 1;
メリット
- 曜日テーブルを一度作成すれば、様々なクエリで曜日を取得することができます。
- 曜日テーブルを作成する必要があるため、手間がかかります。
T-SQL スクリプトを使用して、曜日を取得することができます。
DECLARE @dt DATETIME = '2024-03-30';
SELECT CASE DATENAME(dw, @dt)
WHEN 'Monday' THEN '月曜日'
WHEN 'Tuesday' THEN '火曜日'
WHEN 'Wednesday' THEN '水曜日'
WHEN 'Thursday' THEN '木曜日'
WHEN 'Friday' THEN '金曜日'
WHEN 'Saturday' THEN '土曜日'
ELSE '日曜日'
END AS 曜日;
- スクリプトの内容を変更する必要がある場合は、T-SQL スクリプトの知識が必要となります。
- 上記以外にも、曜日を取得する方法はいくつかあります。
sql sql-server datetime