我正在为数据库中的两个日期表编写查询。有一个dbo.days(日历)表和一个dbo.holidays表。使用日历表填写另一个日期范围内的所有日期
我需要的所有独特的天是节假日一个简单的列表,所以我的查询的输出应该是这样的:现在
01-01-2014
01-02-2014
18-04-2014
20-04-2014
26-04-2014
27-04-2014
,压延表有所有的日期,但作为第二列仅列出它是否是一个工作日
而且假期表看起来有点像这样(周末和节假日没有区别):
Description DateFrom DateTo
Holiday description 01-01-2014 01-02-2014
Holiday description 18-04-2014 18-04-2014
Holiday description 20-04-2014 21-04-2014
Holiday description 26-04-2014 26-04-2014
由于这TABL e允许日期范围,打开一堆蠕虫。我不能只选择所有DateFrom天。实际上,没有假期(荷兰在这里)持续两天以上,所以只要选择所有的DateFroms并添加几个DateTo日期就可以得到我想要的列表。但是如果有人想要有一个月的新年假期,我想看01/01,02/01,03/01,04/01等。 下面的查询检索日期,但并不是'我似乎按照我设想的方式工作。通过SO,我发现this article,最后列出的查询在某种程度上适用于我的情况。我无法在我的情况下工作。
也许这是一个初学者的错误,但我希望有人能够帮助我。
Select convert(varchar,d.Date, 105) from dbo.Days d
LEFT OUTER JOIN dbo.Holidays H on d.Date = h.DateFrom
where d.Date >= h.DateFrom or d.Date <= h.DateTo
你可能会用一个假期场最好在您的日历表中的内容。另外,如果你想要一个假期表,只需要两个字段,日期和假期。如果任何事情持续超过一天,请输入多个记录。 –