Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 如何从字段转换日期,以便在WHEN-VALIDATE-ITEM触发器上进行比较_Plsql_Oracle11g_Oracleforms - Fatal编程技术网

Plsql 如何从字段转换日期,以便在WHEN-VALIDATE-ITEM触发器上进行比较

Plsql 如何从字段转换日期,以便在WHEN-VALIDATE-ITEM触发器上进行比较,plsql,oracle11g,oracleforms,Plsql,Oracle11g,Oracleforms,我正在开发Oracle表单应用程序。我有一个名为DOB的字段,其日期格式为08-May-1890。我想将其转换为WHEN-VALIDATE-ITEM触发器上的18900508,以进行比较 我对这个很陌生,不知道从哪里开始。下面是我目前正在使用的代码 BEGIN --Convert date from 08-May-1890 to 1890508 IF( TO_CHAR(:EMPLOYEE.DOB,'YYYY-MON-DD') < 20180927)THEN

我正在开发Oracle表单应用程序。我有一个名为
DOB
的字段,其日期格式为
08-May-1890
。我想将其转换为
WHEN-VALIDATE-ITEM
触发器上的
18900508
,以进行比较

我对这个很陌生,不知道从哪里开始。下面是我目前正在使用的代码

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(:EMPLOYEE.DOB,'YYYY-MON-DD') < 20180927)THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
开始
--将日期从1890年5月8日转换为1890508
如果(TO_CHAR(:EMPLOYEE.DOB,'YYYY-MON-DD')<20180927,则
--在这里做点什么
提出形式(触发)(失效);;
如果结束;
结束;

如果employee.dob是字符串,请将其转换为日期,然后转换为字符串,比较值必须是字符串:

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(TO_DATE(:EMPLOYEE.DOB,'YYYYMONDD', 'NLS_DATE_LANGUAGE = English'),'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(:EMPLOYEE.DOB,'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
开始
--将日期从1890年5月8日转换为1890508
如果(TO_CHAR(TO_DATE(:EMPLOYEE.DOB,'yyyyymond','NLS_DATE\u LANGUAGE=English'),'yyyyymmdd')<'20180927'),则
--在这里做点什么
提出形式(触发)(失效);;
如果结束;
结束;
如果employee.dob已经是日期,并与字符串进行比较:

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(TO_DATE(:EMPLOYEE.DOB,'YYYYMONDD', 'NLS_DATE_LANGUAGE = English'),'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(:EMPLOYEE.DOB,'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
开始
--将日期从1890年5月8日转换为1890508
如果(TO_CHAR(:EMPLOYEE.DOB,'yyyyymmdd')<'20180927'),则
--在这里做点什么
提出形式(触发)(失效);;
如果结束;
结束;
但是如果employee.dob是一个日期列,那么不要将其转换为字符串,而是将其与日期进行比较

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF :EMPLOYEE.DOB < to_date('20180927','YYYYMMDD') )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
开始
--将日期从1890年5月8日转换为1890508
如果:EMPLOYEE.DOB<截止日期('20180927','yyyyymmdd'),则
--在这里做点什么
提出形式(触发)(失效);;
如果结束;
结束;

我把赌注押在第三个例子上
:DOB
可能是s日期数据类型字段。是的,:DOB是日期字段。你的解决方案对我有用,谢谢。