【问题标题】:Passing date value from apex in plsql procedure在plsql过程中从顶点传递日期值
【发布时间】:2014-11-06 18:24:32
【问题描述】:

我在 Apex 中的日期格式有问题。在我的数据库中,日期格式为“29-05-1994”(DD-MM-YYYY),相同的格式显示在我的顶点页面上,但不在我的会话状态(DD-MON-YY)中。通过一个程序,我尝试计算某人的年龄。结果是-79.61。这不正确,它与格式有关。当我在程序中将格式更改为 DD-MON-YYYY 时,我会得到:2000 东西。还是不正确。有谁知道如何解决这个格式问题?

这是我的程序的一部分:

> v_datum date := to_date(V('P7_GEBOORTEDATUM'), 'DD-MON-YY');
> v_leeftijd number(10,2);
> 
> -- check my age (in years) 
> v_leeftijd := (sysdate - v_datum)/365;

【问题讨论】:

  • 1.使用标签oracle-apex,而不是apex 2. 检查Application properties - GlobalizationFormat MaskSettings 项目P7_GEBOORTEDATUM 的属性部分中的@ 3. 尝试在过程4 中的某处输出变量值。如果没有任何帮助,您可以在 apex.oracle.com 上注册,在那里创建测试应用程序并为可以尝试编辑您的应用程序的人提供临时访问权限。
  • 熟悉 RR 格式可能也值得 - 很难用docs.oracle.com/cd/E11882_01/server.112/e41084/…提供的信息来判断

标签: date plsql format oracle-apex sysdate


【解决方案1】:

日期格式是 Oracle 中的首选项。也就是说,您可以定义将被任何客户端首选项覆盖的服务器格式(默认)。 即服务器可以设置为 mm/dd/yy --> 应用程序服务器可以设置为使用 dd-mm-rr(优先) --> 客户端可以设置为 dd.mm.yyyy(优先)

最好将日期视为字符串并来回转换,而不是采用日期格式。

如果值低于或超过世纪之交,切勿使用 YY。即低于2000及以上。 如果值低于 1950 或以上,切勿使用 RR。

最好使用 YYYY 并保证年份正确。

这样您可以调用 to_date(v('v7_geboortedatum'),'dd.mm.yyyy') 并确保您使用正确的日期。

round ((sysdate - to_date(v('v7_geboortedatum'),'dd.mm.yyyy')) / 365, 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2014-07-27
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多