我有一张包含我们在英国的公众假期的表格。我希望能够根据这些日期检查给定日期,如果在此表中找到日期,那么我可以执行一些计算。这是我到目前为止所拥有的。我需要一个while循环来检查@date的每个日期吗?
declare @publicHoliday date;
set @publicHoliday = (Select [HolidayDate] from [table].[dbo].[Holidays]);
if(@date) = @publicHoliday
-- If found then do some calculation stuff
答案 0 :(得分:2)
您应该使用 IN :
if(@date IN (Select [HolidayDate] from [table].[dbo].[Holidays])) THEN
-- Do your calculation stuff
小心日期格式。必须 DATE ,否则您也会比较时间。
答案 1 :(得分:1)
如果您想检查@Date是否为公众假期,请尝试:
if exists(Select [HolidayDate] from [table].[dbo].[Holidays] where holidaydate = @date)
-- If found then do some calculation stuff