oracle触发器求天数

kong_d_f 2009-07-14 11:32:52
小弟想求一条触发器
当进入每月的1日0时,数据库自动求出该月天数(闰年也要考虑进去),并将每天的日期+星期几写入该库指定表(WORKINFO)的指定字段(DAY)中

比如这个月是7月,Oracle会自动计算出这个月31天,并写入WORKINFO表DAY字段31条记录
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 suncrafted 的回复:]
使用job调用sp
并使用last_day和TO_CHAR(DATE,FORMAT) 取得相关的日期维度
TO_CHAR(DATE,FORMAT) 参见:http://blog.csdn.net/suncrafted/archive/2009/06/16/4273528.aspx
[/Quote]

同意用job,比用trigger要好一些。
老张-AI 2009-07-15
  • 打赏
  • 举报
回复
学习了
mantisXF 2009-07-14
  • 打赏
  • 举报
回复
-- FYI:

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
----------------------------------------
2009-7-14 11:49:48

Executed in 0.016 seconds

SQL> SELECT TO_CHAR(SYSDATE,'D')-1 XINGQI FROM DUAL;

XINGQI
----------
2

Executed in 0 seconds

SQL> SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1 ALL_DAY,
2 '星期' ||
3 DECODE((TO_CHAR(TRUNC(SYSDATE, 'MM') + ROWNUM - 1, 'D') - 1),
4 0,
5 7,
6 (TO_CHAR(TRUNC(SYSDATE, 'MM') + ROWNUM - 1, 'D') - 1)) XINGQI
7 FROM DUAL
8 CONNECT BY ROWNUM <=
9 TO_NUMBER(TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, 1), 'MM') - 1, 'DD')) - 1;

ALL_DAY XINGQI
----------- --------------------------------------------
2009-7-1 星期3
2009-7-2 星期4
2009-7-3 星期5
2009-7-4 星期6
2009-7-5 星期7
2009-7-6 星期1
2009-7-7 星期2
2009-7-8 星期3
2009-7-9 星期4
2009-7-10 星期5
2009-7-11 星期6
2009-7-12 星期7
2009-7-13 星期1
2009-7-14 星期2
2009-7-15 星期3
2009-7-16 星期4
2009-7-17 星期5
2009-7-18 星期6
2009-7-19 星期7
2009-7-20 星期1

ALL_DAY XINGQI
----------- --------------------------------------------
2009-7-21 星期2
2009-7-22 星期3
2009-7-23 星期4
2009-7-24 星期5
2009-7-25 星期6
2009-7-26 星期7
2009-7-27 星期1
2009-7-28 星期2
2009-7-29 星期3
2009-7-30 星期4
2009-7-31 星期5

31 rows selected

Executed in 0.265 seconds
[Quote=引用 1 楼 mantisXF 的回复:]
晕死了,直接写个SQL就可以求出日期+星期几了。楼主做数据仓库的?
引用楼主 kong_d_f 的帖子:
小弟想求一条触发器
当进入每月的1日0时,数据库自动求出该月天数(闰年也要考虑进去),并将每天的日期+星期几写入该库指定表(WORKINFO)的指定字段(DAY)中

比如这个月是7月,Oracle会自动计算出这个月31天,并写入WORKINFO表DAY字段31条记录
[/Quote]
ldw2545398 2009-07-14
  • 打赏
  • 举报
回复
当进入每月的1日0时 执行 这是定时执行不是触发器! 的用JOB实现
job可以执行一个过程 过程得到当前时间就是 月的第一天,用last_day(当前日期)得到本月最后一天 ,在用for 第一天。。最后一天 ,插入出具库WORKINFO表DAY字段
mantisXF 2009-07-14
  • 打赏
  • 举报
回复
晕死了,直接写个SQL就可以求出日期+星期几了。楼主做数据仓库的?[Quote=引用楼主 kong_d_f 的帖子:]
小弟想求一条触发器
当进入每月的1日0时,数据库自动求出该月天数(闰年也要考虑进去),并将每天的日期+星期几写入该库指定表(WORKINFO)的指定字段(DAY)中

比如这个月是7月,Oracle会自动计算出这个月31天,并写入WORKINFO表DAY字段31条记录
[/Quote]
maitianhust 2009-07-14
  • 打赏
  • 举报
回复
oracle函数last_dayq求最后一天的日期,可以用触发器也可以用Job实现,
suncrafted 2009-07-14
  • 打赏
  • 举报
回复
使用job调用sp
并使用last_day和TO_CHAR(DATE,FORMAT) 取得相关的日期维度
TO_CHAR(DATE,FORMAT) 参见:http://blog.csdn.net/suncrafted/archive/2009/06/16/4273528.aspx

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧