2013-03-08 141 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'));