在Oracle 11g上,我首先运行以下代码:
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
create table table1(mytime timestamp);
然后我想在我的桌子上添加一行:
insert into table1(mytime)
values(TO_TIMESTAMP('2014-12-24 07:16:11'));
我也试过没有TO_TIMESTAMP:
insert into table1(mytime)
values('2014-12-24 07:16:11');
都给了我同样的错误:
--A * here: ...values('2014...
-- *
ORA-01843: not a valid month
为什么?
答案 0 :(得分:1)
TO_TIMESTAMP( string1 [, fmt ] ['nlsparam'] )
可选的fmt 指定char的格式。如果省略fmt,那么char必须在 TIMESTAMP数据类型的默认格式,由。确定 NLS_TIMESTAMP_FORMAT 初始化参数。
您可以在此处看到,您必须更改nls_date_format
而不是NLS_TIMESTAMP_FORMAT
。
使用;
alter session set NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
然后尝试插入数据。
注意强>
最好以TO_DATE
和TO_TIMESTAMP
使用正确的格式,例如
TO_TIMESTAMP ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF')
或者您可以使用Date literals 像
TIMESTAMP '1997-01-31 09:26:50.124'
答案 1 :(得分:0)
这应该很容易谷歌。
但是你走了:
insert into table1(mytime)
values(TO_TIMESTAMP('2014-12-24 07:16:11', 'YYYY-MM-DD HH:MI:SS'));