0

我正在开发一个需要使用 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);
});

这很容易。现在我必须从两个不同的表EventCalenderBooking表中生成这些日期,我必须查看哪些日期被阻止或预订,并相应地仅显示未来 90 天内可用的日期。

让我们假设EventCalenderBlockDate列和Booking表也有BlockDate列。

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

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

4

2 回答 2

1

既然您没有使用 SQL 来生成可用日期,那么为什么要使用它来修剪这个列表呢?

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

为了使用 SQL 执行您想要的操作,我希望您需要使用可用日期填充一个表,然后对另外两个表进行外部连接,并且只选择阻塞表和事件表为空的行。

于 2012-05-29T13:07:06.453 回答
1

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

我假设您正在使用dateblockeddate 列中的数据类型。

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
)
于 2012-05-29T13:15:18.630 回答