我有一个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戳中修剪时间。任何帮助将不胜感激!
您需要一个日历表。这是因为数据库不知道哪几天是工作日。
只需创建一个表,其中包含您感兴趣的范围内的每一天,并标记哪些是工作日或不是工作日:
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] 删除。
我来说两句