【发布时间】:2015-07-31 22:10:09
【问题描述】:
我有两张桌子。一个表是具有date 列和kindofday 列的日历。 kindofday 列包含“bankday”、“saturday”、“sunday”和“holiday”。我需要考虑假期,否则网上有几个查询会起作用......
date kindofday
1999-08-24 00:00:00:000 bankday
我正在努力构建一个可以计算从给定日期开始的工作日数的查询。比如:
Select [date] + 12 business days。我不确定如何使用日历表作为参考 - 基本上我需要在此日历表中找到一个日期,然后将该列倒计时几个工作日并提取该日期。我将把它放在一个函数中,所以不用担心复杂性。可能有一个愚蠢的简单解决方案,我只是没有看到。
我愿意接受任何考虑到假期的解决方案,即使他们不使用我的日历表。我可以更改日历表,但是我需要这样做才能完成这项工作...即:使用binary 而不是string 'bankday' 等...
我试过这个:我已经从日历中删除了所有非银行日,并添加了一个 integer 键,然后是 set @date = (select key from calendar where @date=[date],然后将工作日数量添加到该键并返回日期,但问题是当@date 是非银行日时,它不会在日历表中找到匹配项...
【问题讨论】:
-
附注一下,您的
date列的类型似乎是datetime。将日期存储为时间戳是自找麻烦。 -
@nord,是的,我在查询中进行转换以删除时间戳
-
它不必首先在数据库中。
标签: sql-server date count calendar