SQL仅返回工作日

杰伊

我有一个Sybase数据库,我想从中提取当天和之前的工作日。我写了以下内容,但是如果在星期一运行,则不会像周末那样妨碍前一个星期五。谁能告诉我如何解决这个问题?

Select distinct price_date
From table
Where price_date IN (convert(varchar(10), dateadd(day, 0, getdate()), 101), 
    convert(varchar(10), dateadd(day, -1, getdate()),101))

我知道,convert语句用于从datetime戳中修剪时间。任何帮助将不胜感激!

Ben

您需要一个日历表。这是因为数据库不知道哪几天是工作日。

只需创建一个表,其中包含您感兴趣的范围内的每一天,并标记哪些是工作日或不是工作日:

Create Table BusinessCalendar(
      dt date primary key,
      fWorkingDay bit
)

然后,您可以找到“下一个工作日”,如下所示:

select min(dt) from BusinessCalendar cal where cal.dt > @whenever and fWorkingDay = 1

您可以找到这样的上一个工作日:

select max(dt) from BusinessCalendar cal where cal.dt < @whenever and fWorkingDay = 1

日历表也可能包含您可能需要的其他与日期相关的内容,例如夏令时等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章