今天用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错误的问题,该错误是由于时间默认值格式不匹配导致的。通过将默认时间值用to_date函数转换并指定日期格式,如`to_date('1980/01/01 00:00:00','yyyy-mm-dd hh24:mi:ss')`,解决了问题,成功创建了表。
778

被折叠的 条评论
为什么被折叠?



