0
我正在嘗試在SQL中編寫函數以返回給定日期名稱的最近或最近日期。如何查找給定日期名稱的最近/最近日期
例如,今天是Wed 18/05/16,我想通過函數day ='Mon'period ='next'並返回23/5/16或者day ='Mon'period ='last '16/05/16返回。
我嘗試了以下方法,但似乎太笨重,因爲我仍然需要爲最近日期和下週的日期添加邏輯。
有人能指出我如何最好地接近這個方向嗎?
在此先感謝。
DECLARE @theWeekday VARCHAR(3) = 'Sun';
DECLARE @dayDiff INT;
DECLARE @dayOfWeek TINYINT
DECLARE @todayOfWeek TINYINT
--return thursday last week select DATEADD(DAY, ((DATEDIFF(DAY, '19000104', getdate())/7) * 7) hence why i have @dayOfWeekThu
DECLARE @dayOfWeekThu INT = 4;
SET @dayOfWeek = CASE @theWeekday
WHEN 'Mon' THEN 1
WHEN 'Tue' THEN 2
WHEN 'Wed' THEN 3
WHEN 'Thu' THEN 4
WHEN 'Fri' THEN 5
WHEN 'Sat' THEN 6
WHEN 'Sun' THEN 7
END
If @dayOfWeekThu < @dayOfWeek
BEGIN
SET @dayDiff = @[email protected];
END
ELSE
BEGIN
SET @dayDiff = ABS(@[email protected]);
END
select DATEADD(DAY, ((DATEDIFF(DAY, '19000104', getdate())/7) * 7) - @dayDiff, '19000104')
非常感謝你,那正是我所需要的。 –