Oracle Apex中CURRENT_TIMESTAMP精度异常问题求助
解决Oracle Apex表单CURRENT_TIMESTAMP默认值异常问题
排查方向与解决方案
1. 确认表层面的默认值设置
先检查表的date_time列是否在数据库层面正确设置了CURRENT_TIMESTAMP默认值,而非仅在Apex表单中配置:
- 执行SQL查看表结构:
SELECT column_name, data_default FROM user_tab_columns WHERE table_name = '你的表名' AND column_name = 'DATE_TIME'; - 如果
data_default为空,直接在表层面添加默认值:
数据库层面的默认值会覆盖表单的处理逻辑,确保SQL和表单插入都能获取正确时间。ALTER TABLE 你的表名 MODIFY date_time DEFAULT CURRENT_TIMESTAMP;
2. 调整Apex表单项属性
若需在表单层面控制默认值,检查以下项属性:
- 项类型:必须选择
Date Picker (Timestamp),普通Date Picker仅处理日期部分,时间默认填充午夜。 - 默认值类型:选择
PL/SQL Expression,默认值填写CURRENT_TIMESTAMP,避免使用Static Value等其他类型。 - 禁用用户输入:若该字段无需手动修改,将项的
Enabled设为No,防止提交时覆盖默认值。
3. 检查页面提交处理逻辑
查看表单对应的页面处理(Process),确认没有强制给date_time字段赋值为纯日期的代码。比如排查是否存在:P1_DATE_TIME := TRUNC(SYSDATE);这类语句,若有则修改为:P1_DATE_TIME := CURRENT_TIMESTAMP;。
4. 验证时区一致性
确认数据库与Apex应用的时区设置匹配:
- 查看数据库时区:
SELECT dbtimezone FROM dual; - 查看Apex应用时区:进入
Shared Components->Application Definition,检查Time Zone配置,确保与数据库时区一致,避免时间转换丢失时分秒。
内容的提问来源于stack exchange,提问作者Trung Lương
相关产品推荐
相关产品推荐

