SQLで当月の第何週目の何曜日か取得する

プログラミング SQL Server

SQLServerでは関数で今日は当月の第何週目か取得する関数がないので、自作しました。

スポンサーリンク

SQLで今日は第何週、何曜日か取得する

SQLServerでは関数で今日は当月の第何週目か取得する関数がないので、自作しました。

当日の日付から計算して第何週目か取得

実際に計算してDATENAME()関数と組み合わせて当月の第何週目の何曜日か出してます。

DECLARE @today VARCHAR(10) = CONVERT(VARCHAR(10), GETDATE() , 111 )
SELECT
    @today + 'は第'
     +  CAST(( DATENAME( DAY, CAST( @today AS DATE ) ) + 6) / 7 AS VARCHAR )
     +  DATENAME( weekday, CAST( @today AS DATE ))
     + 'です。'
     AS data_name

実行結果は

2013/12/18は第3水曜日です。

です。

内容

CAST(( DATENAME( DAY, CAST( @today AS DATE ) ) + 6) / 7 AS VARCHAR )

で当日が該当月の何週目かを求めています。

DATENAME( weekday, CAST( @today AS DATE ))

はDATENAME()関数で当日の曜日を取得しています。

処理をユーザー定義関数化

処理をユーザー定義関数化にして取得する日付けを
指定できるようにすると

CREATE FUNCTION [dbo].[第何週目か取得関数]
(
  @today VARCHAR(10) = '2013/12/24'
)
RETURNS VARCHAR(128)
BEGIN 
    DECLARE  @ret  VARCHAR(128) = ''
    SELECT
        @ret = @today + 'は第'
         +  CAST(( DATENAME( DAY, CAST( @today AS DATE ) ) + 6) / 7 AS VARCHAR )
         +  DATENAME( weekday, CAST( @today AS DATE ))
         + 'です。'
         AS data_name

    RETURN @ret
END

のようになります。

実行結果は

2013/12/24は第4火曜日です。

です。

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