Oracle 使用另一列设置日期列默认值(VARCHAR2(8)),错误ora-00904
错误: ORA-00904:发布日期 为什么会发生这种情况Oracle 使用另一列设置日期列默认值(VARCHAR2(8)),错误ora-00904,oracle,oracle12c,Oracle,Oracle12c,错误: ORA-00904:发布日期 为什么会发生这种情况 我的Oracle版本是12c不,那不行 但是,在12c上,创建一个虚拟列。例如: create table T_XXX ( DATE_POST VARCHAR2(8) NOT NULL, DATE_GET DATE DEFAULT TO_DATE(SUBSTR("DATE_POST",1,8),'YYYYMMDD') ); 不客气。因为你们不能在DEFAULT子句中引用另一列。我可以问你们为什么要这样做吗?为什么要在dat
我的Oracle版本是12c不,那不行 但是,在12c上,创建一个虚拟列。例如:
create table T_XXX
(
DATE_POST VARCHAR2(8) NOT NULL,
DATE_GET DATE DEFAULT TO_DATE(SUBSTR("DATE_POST",1,8),'YYYYMMDD')
);
不客气。因为你们不能在DEFAULT子句中引用另一列。我可以问你们为什么要这样做吗?为什么要在date和VARCHAR2列中同时保留日期?把它放在日期栏就行了。如果您想以给定的字符串格式查看它,只需在运行时对其应用to_字符。
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>