oracle-apex - 在 Oracle Apex 中设置自动时区时出错
问题描述
我在我的 oracle apex 应用程序的许多页面中将我的数据中的日期(在我的数据表中保存为“到期日期”,作为日期数据类型,没有时间)与 current_date 进行比较。例如,我有一个页面,通过检查记录的到期日期是否与 current_date 等价,在交互式报告中显示“今天到期的项目”,类似地,另一个页面显示项目到期日期。SQL 查询生成正确的报告,但问题是当前日期是根据美国 (PDT/UCT7) 时间计算的,比我当前区域的时间晚 -9 小时,因此我的页面仅在下午显示正确的结果。
我研究并发现在应用程序的全球化属性中将应用程序时区设置为自动可以解决这个问题,但是当我设置自动时区时,我的应用程序完全停止工作并且 . “设置时区”页面显示为微秒,但甚至没有让用户设置时区,页面重定向并显示以下错误。
解决方案
您提到您的日期存储在 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
推荐阅读
- laravel - Laravel 迁移:创建 2 个表用户表和广告表(外键引用用户 ID)
- mysql - 如何找到满足varchar另一列频率的列
- java - Acces 拒绝使用 STS4 将工件部署到 Azure Artifacts
- svelte - 如何在 Sapper 中更改按钮单击的路线?
- grails - 在 grails 应用程序中连接自定义安全自定义安全评估程序
- c# - 在 C# 中返回小于 n 的 2 的所有幂
- swift - SwiftUI - 不清楚如何使用异步方法处理警报
- reactjs - 如何使用 mobx-react 在 mobx 商店中定义动作?
- laravel - Laravel 在 API Post 上路由总是 404
- python - 如何使用python线程