SQL - 返回记录存在的第一个日期的记录

时间:2013-07-23 12:29:03

标签: sql sql-server sql-server-2008

假设我有一个表格,其记录仅在工作日填充。我有一个返回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天,还是有更简单的方法?

2 个答案:

答案 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

http://sqlfiddle.com/#!3/412dc/1