按日期统计数据,比如按天统计网店变化情况。
方案1:每天初始化一条当天数据,定时更新
注意点:初始化失败(宕机,服务重启等),要有补录措施
方案2:初始化一年的数据,每次只做更新,查询做控制
注意点:每年提早初始化下一年的时间,最好写在程序里,防止忘记,导致对接出问题。
如何初始化一段时间,Oracle通过SQL语句可以直接生成日历表:
select to_char(everyDay, 'yyyy-mm-dd') as dt, /*日期*/ to_char(everyday, 'yyyy') as yr, /*年*/ to_char(everyday, 'mm') as mm, /*月*/ to_char(everyday, 'dd') as dd, /*日*/ to_char(everyday, 'dy') as dayofweek, /*星期几*/ to_char(everyday, 'WW') as weeknum, /*该年的第几周*/ lpad(to_char(everyday, 'w'), 6) as monthOfWeek, /*该月的第几周*/ to_char(everyday, 'Q') as qr /*季度*/ from (select to_date('20180101', 'yyyymmdd') + level - 1 as everyDay from dual connect by level <= (last_day(to_date('20181231', 'yyyymmdd')) - to_date('20180101', 'yyyymmdd') + 1));