Oracle ORA-01861: 文字与格式字符串不匹配

Posted 谦谦均

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle ORA-01861: 文字与格式字符串不匹配相关的知识,希望对你有一定的参考价值。

今天用oracle创建一个表的时候报错:Oracle ORA-01861: 文字与格式字符串不匹配

在这里插入图片描述
仔细检查了一下创表语句,并没有发现语法错误:

--创建t_device表
create table t_device(
       id number(20),
       device_code varchar2(60) default('') not null,--设备编码
       device_name varchar2(60) default('') not null,--设备名称
       gw_dev_code varchar2(60) default('') not null,--如果是子设备,关联的网关设备编码
       product_code varchar2(60) default('') not null,--所属的产品编码
       del_flag number(11) default(0) not null,
       enable_status number(11) default(0) not null,--0:未启用 1:启用
       active_status number(11) default(0) not null,--0:未启用 1:启用
       last_online_time date default('1980/01/01 00:00:00') not null,--最近一次上线时间
       create_time date default(sysdate) not null,--创建时间
       update_time date default(sysdate) not null,--最后更新时间
       device_secret varchar2(60) default('') not null,--设备密钥
       firmware_version varchar2(60) default('') not null,--固件版本
       dev_host varchar2(20) default('') not null,--最近一次上线主机地址
       dev_port number(11) default(0) not null,--最近一次上线端口
       constraint pk_t_device primary key(id),--设置主键
       constraint uq_device_code unique(device_code)--唯一约束
);

百度一下说是时间类型的默认值需要用to_date函数转换一下,并指定日期格式。如果直接按照字符串方式,或者直接使用to_date('1980/01/01 00:00:00'),没有指定日期格式,就会导致你插入的时间格式和数据库现有的时间格式不一致。

--创建t_device表
create table t_device(
       id number(20),
       device_code varchar2(60) default('') not null,--设备编码
       device_name varchar2(60) default('') not null,--设备名称
       gw_dev_code varchar2(60) default('') not null,--如果是子设备,关联的网关设备编码
       product_code varchar2(60) default('') not null,--所属的产品编码
       del_flag number(11) default(0) not null,
       enable_status number(11) default(0) not null,--0:未启用 1:启用
       active_status number(11) default(0) not null,--0:未启用 1:启用
       last_online_time date default(to_date('1980/01/01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')) not null,--最近一次上线时间
       create_time date default(sysdate) not null,--创建时间
       update_time date default(sysdate) not null,--最后更新时间
       device_secret varchar2(60) default('') not null,--设备密钥
       firmware_version varchar2(60) default('') not null,--固件版本
       dev_host varchar2(20) default('') not null,--最近一次上线主机地址
       dev_port number(11) default(0) not null,--最近一次上线端口
       constraint pk_t_device primary key(id),--设置主键
       constraint uq_device_code unique(device_code)--唯一约束
);

修改之后创建成功。

以上是关于Oracle ORA-01861: 文字与格式字符串不匹配的主要内容,如果未能解决你的问题,请参考以下文章

php ORA-01861: 文字与格式字符串不匹配

Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决

oracle ORA-01861: 文字与格式字符串不匹配 move_date是date类型

Oracle ORA-01861

SQL 错误:ORA-01861:文字与格式字符串 01861 不匹配

ORA-01861: 文字与格式字符串不匹配: SQL