以下のようにストアドプロシージャを作成しました。
ALTER PROCEDURE reminders
AS
BEGIN
SET NOCOUNT ON;
DECLARE @MyDate DATE,
@FirstDate DATE,
@LastDate DATE
SELECT @MyDate = Getdate()
SELECT @FirstDate = CONVERT(VARCHAR(25), Dateadd(dd, -( Day(@mydate) - 1 ), @mydate), 100), @LastDate = CONVERT(VARCHAR(25), Dateadd(dd, -( Day( Dateadd(mm, 1, @mydate)) ),
Dateadd(mm, 1, @mydate)), 100)
DECLARE @AllDates TABLE
(
datevalue DATE
)
DECLARE @Lastday INT
SET @Lastday = Datepart(d, @LastDate)
DECLARE @Days INT
SET @Days = 1
WHILE @Days <= @Lastday
BEGIN
INSERT INTO @AllDates
SELECT @FirstDate
SET @FirstDate = Dateadd(d, 1, @FirstDate)
SET @Days = @Days + 1
END
SELECT AD.datevalue
FROM @AllDates AD
LEFT OUTER JOIN EmpLog EL
ON AD.datevalue = EL.Date
LEFT OUTER JOIN holiday H
ON AD.datevalue = H.Date
WHERE EL.Date IS NULL
AND H.Date IS NULL
AND DATENAME(dw,AD.DateValue) NOT IN ('Saturday','Sunday')
END
私が持っている必要があるのは、出力に将来の日が含まれていてはならないということです。今日12-21-2012
のExDateは、そのコードの出力には2012年12月22日から2012年12月31日までが含まれます。また、現在の日付の16日前にのみコードを出力する必要があります。元。今日の日付は12-21-2012
、そのコードの出力が11月30日から12月21日で、休日と週末を除いたものになるためです。
ありがとうございました