2 回答
TA貢獻1772條經驗 獲得超8個贊
--工作日期參數表(說明 iswork :0-不是工作日 1-是工作日 。設置說明:1)如果正常工作日(1-5)中有非工作日,需要在此維護設iswork設為0,2)如果周六周日為工作日,則需要在此維護iswork=1。
create table dict_workdate
(
workdate varchar2(10),
iswork number(2),
primary key workdate
);
--判斷是否為交易日函數
CREATE OR REPLACE FUNCTION isworkdate(in_date date) Return number
is
result varchar2(256);
l_week number(1);
l_workdate varchar2(10);
l_iswork number(1);
begin
select to_char(in_date,'D') into l_week from dual;
l_workdate := to_char(in_date,'yyyy-mm-dd') ;
if l_week in (1,7) then
select nvl(max(iswork),0) into l_iswork
from dict_workdate where workdate=l_workdate ;
else
select nvl(max(iswork),1) into l_iswork
from dict_workdate where workdate=l_workdate ;
end if;
return l_iswork;
EXCEPTION
WHEN OTHERS THEN
return null;
END;
TA貢獻1864條經驗 獲得超2個贊
單純通過周幾判斷是否交易日比較簡單,看datepart(weekday,@Date)的返回值,大于1小于7就是周一到周五,如果考慮節假日的話,應該需要建一張節假日的表,判斷的時候先剔除表中的日期。
判斷下一個交易日(不考慮節假日情況):
declare @Get_Date_JYR datetime
set @Get_Date_JYR ='2011.12.03'
while datepart(weekday,@Get_Date_JYR) in (1,7)
begin
select @Get_Date_JYR=@Get_Date_JYR+1
end
select @Get_Date_JYR
添加回答
舉報
