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条评论
登录后参与评论

相关文章