ORACLE自動插入目前時間

來源:互聯網
上載者:User

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)
)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.