在Apex应用程序中,我在页面上有一个名为Person的区域。在一个地区内有一个蒙面的日期选择器。我有一项任务来验证出生日期。因此,出生日期不能少于1900年。在“条件”部分,我一直在尝试编写一个pl / sql表达式:
TRUNC(TO_DATE(:P1002_CONTR_BIRTH_DATE, 'MM-DD-YYYY')) > TO_DATE('01.01.1900', 'MM-DD-YYYY')
但它不起作用。我做错了什么?
答案 0 :(得分:1)
你把它放错了地方 - “条件”用来决定一个项目是否会(或不会)在屏幕上呈现。
验证应该放入......好吧, 验证 (显然)。
if to_date(:P1002_CONTR_BIRTH_DATE, 'mm-dd-yyyy') < date '1900-01-01' then
return ('Error - can not set it to before 01-01-1900');
end if;
或者(以及更简单的方法)是打开日期选择器项的属性选项板,导航到其“最小日期”属性并将(例如)-120y
放在那里,这将允许日期高于sysdate - 120 years
(今天,Apex会提高
出生日期小于指定的最低日期04-15-1898'
这不完全是“1900”,但是 - 你可以很容易地计算出来,对吗?此外,-120y比1900年固定年份更灵活。
现在您有两个选择,选择最适合您的选项。
答案 1 :(得分:0)
TO_DATE()方法是将字符串转换为日期,字符串格式应与format_mask相同。
TRUNC(TO_DATE(:P1002_CONTR_BIRTH_DATE, 'MM-DD-YYYY')) > TO_DATE('01-01-1900', 'MM-DD-YYYY')
或
TRUNC(TO_DATE(:P1002_CONTR_BIRTH_DATE, 'MM-DD-YYYY')) > TO_DATE('01.01.1900', 'MM.DD.YYYY')
并确保:P1002_CONTR_BIRTH_DATE
也与格式相同。