【发布时间】:2013-03-08 19:50:35
【问题描述】:
我想以我用alter session 命令设置的格式传递日期。这是我迄今为止尝试过的。不理解无效月份错误。我用的是 10g。
数据库时区为 UTC
SELECT dbtimezone FROM DUAL;
UTC
我设置了会话时区和日期格式
alter session set time_zone = 'UTC';
alter session set NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF TZR';
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';
我在其中插入值的表格如下。
单条记录插入的SQL代码:
Insert into books_outsource_plan(os_cell_id, os_date, os_value, os_snapshot, os_created)
values (1,'2013-03-08',3000,'2013-03-07 19:10:10 UTC','2013-03-08 19:15:54 UTC');
错误报告:
SQL Error: ORA-01843: not a valid month
【问题讨论】:
-
尝试用我在类似问题中看到的 RRRR 替换 YYYY,但没有任何区别。
-
尝试 CASTING 到 to_date 然后插入,试一试...
-
如果我将
to_timestamp_tz添加到时间戳文字中,则插入成功。显然不需要弄乱日期文字。但是,当我查询表时,时间戳与我插入的文字不匹配。特别是,“2013-03-07 19:10:10 UTC”已转换为“07-MAR-13 02.10.10.0000000 PM” -
我看到显示的时间是我的当地时间,这很奇怪,因为我认为 NLS 设置会以 UTC 格式显示它。
-
问题仅在于,这就是为什么您收到 SQL 错误:ORA-01843: not a valid month error...