0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLで第n〇曜日を判定する

Posted at

経緯

来週、パッチチューズデイ(第2火曜日)があります。この「第2火曜日」をSQLでどう判定するのだろうとふと思い検証してみました。SQLを試し打ちするための簡易的な環境を構築する方法もあわせて記録として残しておきます。

環境

  • Windows 11 Pro (未検証ですがWindows 10でも大丈夫だと思います)
  • Rancher Desktop (未検証ですがDocker Desktopでも大丈夫だと思います)

手順

一時的に利用するMySQL環境を構築します。パスワードやポートは適宜書き換えて下さい。

docker run -d --name mysql1 -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 mysql
winget install HeidiSQL.HeidiSQL

色々試してみて、以下のように判定すればいいと考えました。条件に合致する場合は1が、そうでない場合は0が返ってきます。

-- M → 月
-- N → 第N週
-- D → 曜日番号(日曜日が1で、土曜日が7)
-- T → 判定対象の日付
SET
	 @M=4
	,@N=2
	,@D=3
	,@T=STR_TO_DATE('2022/04/12', '%Y/%m/%d')
;

SELECT
	-- M月
	    MONTH(@T) = @M
	-- N週
	AND DAY(@T) BETWEEN (@N - 1) * 7 + 1 AND (@N - 1) * 7 + 7
	-- D曜日
	AND DAYOFWEEK(@T) = @D
	AS RESULT
;

一時的な環境なので、検証後はお片付けします。

docker container rm -f mysql1
winget uninstall HeidiSQL.HeidiSQL

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?