Welcome 微信登录

首页 / 数据库 / MySQL / Oracle自动插入当前时间的年月日YYYY-MM-DD格式的实现

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 table
create 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)
)Oracle 密码过期 ORA-28002: 7 天之后口令将过期 的解决方法Oracle数据库常见对象—索引和同义词相关资讯      Oracle入门教程 
  • 使用SQLT来构建Oracle测试用例  (08/28/2014 06:17:41)
  • Oracle AUTOTRACE 统计信息  (02/18/2013 08:25:40)
  • Linux Oracle服务启动&停止脚本与  (12/16/2012 14:42:37)
  • Oracle入门教程:把表和索引放在不  (07/13/2013 11:21:40)
  • Oracle直接路径加载--append的深度  (02/07/2013 08:26:36)
  • Oracle Connect By用法  (12/16/2012 13:36:10)
本文评论 查看全部评论 (0)
表情: 姓名: 字数