Длина данных в нашей производственной БД, тип данных DATE, равна 7, функция sysdate возвращает 8 символов (дд / мм / гг). Есть ли способ удалить '/' и заполнить только 'ddmmyy'.
Пробовал, но не повезло.
INSERT INTO TESTER(tablename,columnname,defaultdate,prime_number) VALUES ('tabL7845','field894',REPLACE(SYSDATE,'/',''),105);
INSERT INTO TESTER(tablename,columnname,defaultdate,prime_number) VALUES ('ta68888','fiG987',TO_CHAR(sysdate,'MMDDYY'),180);
INSERT INTO TESTER(tablename,columnname,defaultdate,prime_number) VALUES ('tab345','field464',TRIM(BOTH '/' FROM SYSDATE),65);
Строка вставляется, но в таблице я мог найти то же самое формат sysdate,
for eg ) 07/08/20
How can i populate as 070820
Код запуска:
SET SERVEROUTPUT ON;
CREATE OR REPLACE TRIGGER def_trig
BEFORE INSERT OR UPDATE OF datedef ON Test
REFERENCING OLD AS O NEW AS N
FOR EACH ROW
DECLARE
V_DATA_LENGTH NUMBER;
V_DATA_TYPE VARCHAR2(15);
BEGIN
SELECT DATA_LENGTH,DATA_TYPE
INTO V_DATA_LENGTH,V_DATA_TYPE
FROM all_tab_columns
WHERE table_name = :n.tablename
AND column_name =:n.columnname
IF INSERTING THEN
IF v_data_type = 'DATE' THEN
IF length(:n.datedef) > V_DATA_LENGTH THEN
RAISE_APPLICATION_ERROR(-20001,'DATE FIELD LENGTH IS MORE THAN THE CORESPONDING COLUMN DATA LENGTH');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('INSERT IS SUCCESSFUL');
END IF;
END if;
END;
/