如何在sql表中插入时间?

时间:2016-02-09 03:55:12

标签: sql oracle

在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 

为什么?

2 个答案:

答案 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_DATETO_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'));