我在表“tblExceptions”中有一个“workDate”字段和一个“receivedDate”字段。我需要计算两个人的天数。 workDate总是第一位 - 所以,实际上,它有点像workDate是“开始日期”而receiveDate是“结束日期”。但是有些例外情况对我来说很棘手:
首先,我需要排除假期。我有一个名为“tblHolidays”的表,有一个字段 - holidayDate。我有假期存储到明年,所以也许我可以将其纳入查询?
此外,大多数令人不安的是工作日期永远不会发生在周末,但收到的日期可以。所以,我在某种程度上需要在我计算时排除周末,但如果收到的日期恰好在星期六或星期日,请允许周末。因此,如果工作日期是2011年6月3日,并且收到日期是2011年6月11日,则有效天数将是7,而不是9。
非常感谢任何帮助。谢谢!
答案 0 :(得分:2)
这样的事情会给你减去假期的天数:
select
days = datediff(day, workDate, receivedDate)
- (select count(*) from tblHolidays where holidayDate >= workDate and holidayDate < receivedDate)
from
tblExceptions
请注意,日期函数在数据库系统之间有所不同。这基于MS SQL Server,因此如果您使用其他数据库,则可能需要进行调整。
答案 1 :(得分:1)
如果您的表格中包含包含(非周末,非假期等)的日期,并且您知道“开始”日期和“结束”日期的时间是,那么你可以大致这样做:
select count(*) from tblIncludedDates where beginDateValue <= dateField and endDateValue >= dateField
获取这些日期之间的有效天数。