根据两个不同表格中的阻止日期生成未来3个月的可用日期

时间:2012-05-29 12:55:48

标签: c# asp.net sql sql-server-2008 tsql

我正在开发一个需要使用webform $ c#。

转换为asp.net应用程序的项目

以下是jQuery中的一个工作脚本,它根据日历生成当前日期的下一个90天的日期。

这是一个简单的脚本,它不会查找阻塞日期等。

它也只显示工作日的日期,即周一至周五。

$(function(){
function pad(n){return n<10 ? '0'+n : n}
var date = new Date();
var selectElement = $('<select name="dddDate" class="ddDate" >'), optionElement;
for (var count =0; count < 91; count++){
    var day = date.getUTCDay();
   if (day == 0 || day == 1 || day == 2 || day == 3 ||  day == 4 || day == 5) {

      formattedDate = pad(date.getUTCDate()) + '-' + pad(date.getUTCMonth()+1) + '-' +  date.getUTCFullYear();
      optionElement = $('<option>')
      optionElement.attr('value',formattedDate);
      optionElement.text(formattedDate);
      selectElement.append(optionElement);  
    }
    date.setDate(date.getDate() +1);
}
$('#ddDate').append(selectElement);
});

这很容易。现在我必须从两个不同的表EventCalender&amp;中生成这些日期。 Booking表格I必须查看哪些日期被屏蔽或预订,因此仅显示可在接下来的90天内使用的日期。

我们假设EventCalenderBlockDate列&amp; Booking表格还有BlockDate列。

如果有人可以帮助生成一个sql查询,我将不胜感激,该查询将根据两个表中的阻塞日期生成可用日期并填充下拉列表。任何想法或指针都会很棒......

我找了这样的例子,但找不到多少帮助..

2 个答案:

答案 0 :(得分:1)

由于您没有使用SQL生成可用日期,为什么要用它来修剪此列表?

只需加载阻止日期和事件日期,然后从列表中删除这些日期。

为了做你想做的事情,使用SQL,我希望你需要用可用的日期填充一个表,然后在这两个表上做一个外连接,只选择阻塞和事件表所在的行。空。

答案 1 :(得分:1)

以下是在SQL中生成日期的一种方法。

我假设您在封闭日期列中使用了date数据类型。

declare @date date = getdate()

;with dates(d)
as
(
    select  @date
    union all
    select DATEADD(day, 1, d)
    from    dates
    where   d < DATEADD(day, 89, @date)
)

select * 
from dates
except
(
select blockedDate
from table1
union all
select blockedDate
from table2
)