如何解决股票,期货节假日数据库问题

如何解决股票,期货节假日数据库问题,第1张

节假日股市不开盘,股票、期货没有数据。如果需要进行一些数据处理来使得节假日也有数据可以进行一些分析,建议可以采用插值的方法确定,比如用节假日的前一个交易日数据或者前后交易日数据的均值,具体看情况而定。

1.员工信息表(包括 职务(级别),入职时间(工龄),部门等)

2.部门信息表(分组表)

3.工时总表(记录每个月的实际出勤数)(员工号,年度,1月工时,2月工时.....12月工时)

4.休假总表(记录各种假的基数,已休数,剩余数)(员工号,年度,年假基数,上年剩余,已休天数,未休天数,病假基数已休天数,未休天数,其它假已休天数)

5. 考勤明细表(员工号,考勤日期,工时数....)

6. 休假明细表(员工 号,休假日期,休假类型,休假小时数)

7. 休假类型表

8. 工作日表(只需要设置发生状态变化的,周一至周五缺省认为是工作日,周六日为休息日,如10月1日是周一,要设为非工作日,如果刚好是周六,则不需要设置)

9.用户表(包括 权限设置等)

楼下说的 没错,如果你在程序中要查出这样的数据,在程序里拼接sql很方便。如果非要在数据库中直接查出来的话,那就用存储过程,以下是 sqlserver的,如果是 oracel的话,写法有一点点区别,你自己稍微修改一下就行

Create PROCEDURE Test1(@BeginDate DateTime,@EndDate DateTime)

AS

begin

declare @Sql varchar(max) = '', @tableName varchar(100) = '',@tempym varchar(400)=''

WHILE  @BeginDate <= @EndDate

BEGIN    

    

    if charindex(Left(CONVERT(varchar(100), @BeginDate, 112),6),@tempym)<= 0

    begin

        set @tableName = 'SaleCost'+ Left(CONVERT(varchar(100), @BeginDate, 112),6)        

        set @tempym = @tempym+@tableName 

        if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@tableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

           set @Sql = @Sql + ' select * from '+@tableName

           

        if (Year(@BeginDate)+Month(@BeginDate)) <> (Year(@EndDate)+Month(@EndDate))

           set @Sql = @Sql + ' union all '        

    end

      

    SET  @BeginDate = DATEADD(DAY, 1, @BeginDate)

END

print @Sql

EXEC(@Sql) 

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10064697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存