首页 > 解决方案 > 在 Oracle Apex 中设置自动时区时出错

问题描述

我在我的 oracle apex 应用程序的许多页面中将我的数据中的日期(在我的数据表中保存为“到期日期”,作为日期数据类型,没有时间)与 current_date 进行比较。例如,我有一个页面,通过检查记录的到期日期是否与 current_date 等价,在交互式报告中显示“今天到期的项目”,类似地,另一个页面显示项目到期日期。SQL 查询生成正确的报告,但问题是当前日期是根据美国 (PDT/UCT7) 时间计算的,比我当前区域的时间晚 -9 小时,因此我的页面仅在下午显示正确的结果。

我研究并发现在应用程序的全球化属性中将应用程序时区设置为自动可以解决这个问题,但是当我设置自动时区时,我的应用程序完全停止工作并且 . “设置时区”页面显示为微秒,但甚至没有让用户设置时区,页面重定向并显示以下错误。

任何解决这个非常严重的问题的建议都将受到高度赞赏:( 在此处输入图像描述

标签: oracle-apex

解决方案


您提到您的日期存储在 DATE 类型的表中。在您的应用程序中设置“自动时区”不会改变任何内容。它设置数据库会话时区,用于数据类型“TIMESTAMP WITH LOCAL TIME ZONE”的列。数据类型“DATE”不知道时区。为确保您的用户在世界各地看到相同的信息,您应该将日期信息存储在数据类型为“TIMESTAMP WITH LOCAL TIME ZONE”的列中。SYSDATE 的“时区敏感”等效项是 CURRENT_TIMESTAMP。

Joel Kallman 很久以前写了一篇关于这个的博客,描述了这个场景。

https://joelkallman.blogspot.com/2010/09/automatic-time-zone-support-in.html


推荐阅读