假设我有一个表格,其记录仅在工作日填充。我有一个返回DateTime的外部函数(可能会在周末出现)。
如果日期是周末,则没有记录,所以我想返回下周一的记录集。最简单的方法是什么?
例如:
SELECT 1 As Id, CAST('19 July 2013' AS datetime) Date INTO #DATEDATA UNION ALL --friday
SELECT 2 As Id, CAST('22 July 2013' AS datetime) --monday
DECLARE @WeekendDate DateTime = CAST('20 July 2013' AS datetime)
select语句需要返回记录2.
这是一种最简单的方法来做某种while循环,我计算记录并将日期增加1天,还是有更简单的方法?
答案 0 :(得分:2)
Select Min(Date)
from #DATEDATA
Where Date>=@WeekendDate
或
Select * from #DATEDATA
where Date=
(
Select Min(Date)
from #DATEDATA
Where Date>=@WeekendDate
)
答案 1 :(得分:1)
您还可以创建一个函数来返回所需的日期
create function dbo.mydate( @d datetime)
returns datetime
as
begin
declare @day int
set @day = datepart(dw,@d)
return case @day
when 1 then dateadd(dd,1,@d)
when 7 then dateadd(dd,2,@d)
else @d end
end