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')
非常感谢你,那正是我所需要的。 –