oracle插入表当前时间,ORACLE自动插入当前时间

oracle没有date()函数,sysdate函数的值是包括时分秒的,要实现插入当前时间默认值还真麻烦.

只好自己写储存过程,而字段默认值里面又不能调用储存过程,还得写个触发器!而储存过程里面取出来的sysdate前几位的只却变成17-11月-07的格式了,不是自己想要的,2007-11-17的格式,又得单独取年月日再组合起来,这样一来返回值就不能是日期类型而要字符类型了.

一个字,烦!不过还是把他实现了.下面把代码给大家分享一下,如果有更好的方法麻烦告知.

1.储存过程

CREATE OR REPLACE FUNCTION "GET_DATE" RETURN VARCHAR2

IS

yyyy     varchar2(36);

mm     varchar2(36);

dd     varchar2(36);

tempdate   varchar2(36);

BEGIN

tempdate := '';

select to_char(to_date(sysdate),'YYYY') into yyyy from dual;

select to_char(to_date(sysdate),'MM') into mm from dual;

select to_char(to_date(sysdate),'DD') into dd from dual;

tempdate := substr(yyyy,1,4)|| '-'||

substr(mm,1,2)|| '-'||

substr(dd,1,2)

;

return tempdate;

END;

2.触发器

CREATE OR REPLACE TRIGGER STATWEEK_tg

--STATWEEK fdate 的触发器

BEFORE INSERT ON STATWEEK FOR EACH ROW

BEGIN

SELECT get_date INTO :NEW.fdate FROM DUAL;

END;

注:这里的STATWEEK为对应的数据表 fdate为自动增长的字段,get_date为对应的储存过程名.

3.数据表

-- Create tablecreate table STATWEEK(星期一   VARCHAR2(20) default 0,星期二   VARCHAR2(20) default 0,星期三   VARCHAR2(20) default 0,星期四   VARCHAR2(20) default 0,星期五   VARCHAR2(20) default 0,星期六   VARCHAR2(20) default 0,星期日   VARCHAR2(20) default 0,TWEEK VARCHAR2(10),ADMIN VARCHAR2(50),FDATE VARCHAR2(20))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值