2013-03-08 149 views
0

我想通过使用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'; 

我在插入值的表如下。单个记录插入

table

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 
+0

尝试用RRRR取代YYYY,我在类似的问题中看到但没有区别。 – Todd 2013-03-08 19:59:49

+1

尝试CASTING to_date然后插入,试试看... – 2013-03-08 20:01:35

+0

如果向时间戳文字添加'to_timestamp_tz',插入会成功。不需要明显地混淆日期字面量。但是,当我查询表格时,时间戳与我插入的文字不匹配。特别是,'2013-03-07 19:10:10 UTC'被转换为'07 -MAR-13 02.10.10.0000000 PM' – Todd 2013-03-08 20:24:24

回答

0

一下关于TO_DATE,然后插入

LIKE

Insert into books_outsource_plan(os_cell_id, os_date, os_value, os_snapshot, os_created) 
values (1,to_date('2013-03-08'),3000,to_date('2013-03-07 19:10:10 UTC'),to_date('2013-03-08 19:15:54 UTC'));