Oracle Apex表单显示LOCALTIMESTAMP为UTC而非本地时间求助
Oracle Apex表单显示本地时间而非UTC的解决方案
问题根源
Apex会话时区默认可能设为UTC,导致你通过预渲染进程赋值的LOCALTIMESTAMP被自动转换为UTC后显示,和数据库直接查询的本地时间产生差异。
解决步骤
调整应用时区配置
进入应用编辑页 → 共享组件 → 应用属性 → 时区,将其设置为数据库时区或者你需要的具体本地时区(如America/New_York),让Apex使用与数据库一致的时区处理时间。修改日期项的时区属性
编辑P3_CREATED_DATE_TIME项:- 确保格式掩码与期望输出匹配,比如
DD-MON-RR HH.MI.SS.FF AM; - 在高级标签下的时区选项,选择
会话时区,避免项自动将时间转成UTC显示。
- 确保格式掩码与期望输出匹配,比如
优化预渲染进程赋值(可选)
若不想修改全局时区,可在赋值时明确指定时区,强制生成目标时区的时间::P3_CREATED_DATE_TIME := LOCALTIMESTAMP AT TIME ZONE '你的本地时区标识';验证时区一致性
执行SQL查询确认时区:SELECT DBTIMEZONE, SESSIONTIMEZONE FROM dual;确保Apex会话时区与数据库时区匹配,无错位。
验证
修改后重新运行表单,对比P3_CREATED_DATE_TIME的显示值和数据库SELECT LOCALTIMESTAMP FROM dual;的结果,确认两者一致。
内容的提问来源于stack exchange,提问作者Bob Veitch
相关产品推荐
相关产品推荐

