使用另一列设置DATE列默认值(VARCHAR2(8)),错误ora-00904

问题描述 投票:0回答:1
create table T_XXX
(
   DATE_POST VARCHAR2(8) NOT NULL,
   DATE_GET DATE DEFAULT TO_DATE(SUBSTR("DATE_POST",1,8),'YYYYMMDD')
);

错误:

ORA-00904:“ DATE_POST”

为什么会这样?

我的Oracle版本为12c

oracle12c
1个回答
0
投票

不,那是行不通的。

但是,当您使用12c时,请创建虚拟列。例如:

SQL> alter session set nls_Date_format = 'dd.mm.yyyy';

Session altered.

SQL> create table test
  2    (date_post varchar2(8),
  3     date_get  date generated always as (to_date(date_post, 'yyyymmdd'))
  4    );

Table created.

SQL> insert into test (date_post) values ('20200501');

1 row created.

SQL> select * From test;

DATE_POS DATE_GET
-------- ----------
20200501 01.05.2020

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.