-- Create table
create table TEMP_CALENDAR
(
MONTH VARCHAR2(6),
W_7 VARCHAR2(2),
W_1 VARCHAR2(2),
W_2 VARCHAR2(2),
W_3 VARCHAR2(2),
W_4 VARCHAR2(2),
W_5 VARCHAR2(2),
W_6 VARCHAR2(2),
WEEK VARCHAR2(20)
) ;
-- Add comments to the table
comment on table TEMP_CALENDAR
is '日期源数据表';
-- Add comments to the columns
comment on column TEMP_CALENDAR.MONTH
is '月份(格式如:200801)';
comment on column TEMP_CALENDAR.W_7
is '周日的日期(如:06)';
comment on column TEMP_CALENDAR.W_1
is '周一(如:07)';
comment on column TEMP_CALENDAR.W_2
is '周二(如:08)';
comment on column TEMP_CALENDAR.W_3
is '周三(如:09)';
comment on column TEMP_CALENDAR.W_4
is '周四(如:10)';
comment on column TEMP_CALENDAR.W_5
is '周五(如:11)';
comment on column TEMP_CALENDAR.W_6
is '周六(如:12)';
comment on column TEMP_CALENDAR.WEEK
is '本月第几周';
----生成 日历信息
-- truncate table calendar;
declare
vi_begin_year number(6);
vi_end_year number(6);
vi_year number(6);
vi_month number(6);
vs_month varchar2(6);
vs_first_day varchar2(8);
begin
vi_begin_year :=2000; ---start year
vi_end_year :=2100; --- end year
vi_month :=1;
vi_year := vi_begin_year;
loop exit when(vi_year > vi_end_year);
for i in 1..12 loop
if length(i) =1 then
vs_month := to_char(vi_year)||'0'||to_char(i);
else
vs_month := to_char(vi_year)||to_char(i);
end if;
vs_first_day := vs_month||'01';
insert into temp_calendar ( month, week,w_7, w_1, w_2, w_3, w_4, w_5, w_6 )
select substr(vs_first_day,1,6) month,
ceil((to_char(everyday,'dd')+(to_char(to_date(vs_first_day,'yyyymmdd'),'d')-1))/7) as week,
sum(decode(to_char(everyday,'dy'),'星期日',to_char(everyday,'dd'))) as 星期日,
sum(decode(to_char(everyday,'dy'),'星期一',to_char(everyday,'dd'))) as 星期一,
sum(decode(to_char(everyday,'dy'),'星期二',to_char(everyday,'dd'))) as 星期二,
sum(decode(to_char(everyday,'dy'),'星期三',to_char(everyday,'dd'))) as 星期三,
sum(decode(to_char(everyday,'dy'),'星期四',to_char(everyday,'dd'))) as 星期四,
sum(decode(to_char(everyday,'dy'),'星期五',to_char(everyday,'dd'))) as 星期五,
sum(decode(to_char(everyday,'dy'),'星期六',to_char(everyday,'dd'))) as 星期六
from(
select to_date(vs_first_day,'yyyymmdd') + level - 1 as everyDay
from dual
connect by level <= (last_day(to_date(vs_first_day,'yyyymmdd'))
- to_date(vs_first_day,'yyyymmdd') +1) )
group by ceil((to_char(everyday,'dd')+(to_char(to_date(vs_first_day,'yyyymmdd'),'d')-1))/7) ;
commit;
end loop;
vi_year := vi_year+1;
end loop;
end;
order by a.year,a.month, a.week;
分享到:
相关推荐
希望能帮助你。由于博主自己花了2天时间才写出来用在报表里的完全sql展示,所以要点资源分。谢谢
- 合并时间段:合并有重叠或相连的时间段。 10. 高级查找 - 给结果集分页:使用ROW_NUMBER()或LIMIT子句进行分页处理。 - 重新生成房间号:根据房间分配逻辑重新编号。 - 跳过表中n行:使用FETCH或LIMIT子句...
7. **QRTZ_calendars**:此表用于存储日历对象,这些对象可以用来排除某些日期或时间段,避免在这些时段触发作业。 安装Quartz的数据库脚本通常需要以下步骤: 1. 根据你使用的数据库系统(如MySQL、Oracle、SQL ...
3. **分区优化**:在Oracle中,如果数据量极大,可以考虑使用分区表,将不同时间段的数据存储在不同的分区,提高查询效率。 4. **临时表或物化视图**:如果查询频繁,可以创建临时表或物化视图,预先计算并存储结果...
说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么 SYSDATE 显示为 'H 09-05-15'。 ...
3. **预订界面**:用户可以查看教室的时间表,选择合适的教室和时间段进行预订。JSP页面上可能会有日历组件和下拉列表来帮助用户选择日期和时间。 4. **预订处理**:当用户提交预订请求时,系统会通过SQL查询检查...
- **应用场景:** 例如,用户可以通过参数选择查看某个特定时间段内的销售数据。 **3.2 List值列表** - **定义:** List是一种简单的方式,用于显示一系列静态的选项供用户选择。 - **应用场景:** 如显示一个产品...
这样可以确保Oracle会按照指定的格式解析日期和时间。 4. **应用程序调整**:如果你的应用程序在向数据库提交日期,确保应用程序代码也使用与Oracle兼容的日期格式。例如,如果使用Java,可以使用SimpleDateFormat...
例如,找出所有`WORK_START`和`WORK_END`之间的差值,并累计这些时间段。还可以通过计算平均打卡时间、最长连续工作天数等指标,为用户提供更深入的分析。 最后,为了优化用户体验,我们可以引入提醒功能。使用Java...
6. **QRTZ_calendars**:此表用于存储任何自定义的日历,这些日历可以用于排除某些日期或时间段。 7. **QRTZ_FIRED_TRIGGERS**:记录已经触发但尚未执行或正在执行的触发器,用于跟踪调度状态。 8. **QRTZ_PAUSED_...
在提供的PDF文件"Convert-Interval-value-to-calender-syntax-while-mi.pdf"中,可能包含了具体的转换函数或PL/SQL代码段,用于自动将DBMS_JOB的间隔表达式转换为DBMS_SCHEDULER的日历格式。这个过程可能涉及到解析...
8. **QRTZ_CALENDARS**:Quartz允许用户自定义日历,以排除某些日期或时间段的任务触发。此表存储这些自定义日历的Blob数据。 9. **QRTZ_FIRED_TRIGGERS**:当Trigger被调度器触发时,相关信息会被记录在此表中。这...
1. **多视图支持**:DayPilotPro支持日、周、月、年等多种视图,用户可以根据需要切换查看不同时间段的计划。 2. **事件管理**:可以创建、编辑和删除事件,并支持拖放操作,使得调整日程变得简单直观。 3. **资源...
3. 预约功能:用户可以查看所有可用会议室,选择合适的日期和时间进行预约,系统需防止同一时间段内重复预约。 4. 预约审核:管理员可对预约申请进行审核,确认是否批准。 5. 预约记录:显示用户的预约历史,方便...
实例202 计算程序运行时间 257 实例203 从控制台输入密码 258 9.4 Math类的使用 259 实例204 角度和弧度的转换 259 实例205 三角函数的使用 260 实例206 反三角函数的使用 261 实例207 双曲函数的使用 262 实例208 ...