我有一个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))
转换语句用于修剪日期时间戳的时间,我知道这很麻烦。任何帮助将不胜感激!
答案 0 :(得分:0)
您需要一张日历表。这是因为数据库不知道哪几天是工作日。
只需创建一个表格,其中包含您感兴趣的范围内的每一天,并标记哪些是工作日或不是工作日:
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
日历表还可能包含其他与日期相关的内容,例如您可能需要的夏令时等。