我可以更改我正在使用从表 A 中选择的创建表创建的表 B 中列的数据类型和最大长度吗?



我希望将转换后的日期格式放在 ResultB 表中而不是 CHAR 类型日期中,我正在寻找一种方法在 1 次创建表状态中执行此操作。

我已经成功地创建了一个新的表结果B,其中包含来自源表源A的数据子集。 有一列 UPLSTD(CHAR 类型(包含日期,为了与当前日期进行比较,我使用 to_date 函数转换了 CHAR 类型日期,这也有效。

CREATE TABLE ResultB AS
(SELECT UPUPRF,
UPTEXT,
UPLSTD
FROM SourceA
WHERE to_date(SUBSTR(DIGITS(UPLSTD), 27, 6), 'RRMMDD') < CURRENT_DATE - 10 DAYS)
WITH DATA

我希望输出为:

UPUPRF    UPTEXT    UPLSTD (DATE Format)
------   --------   --------------------
ABCD      ABCDEFG   2019-08-21

但实际情况是:

UPUPRF    UPTEXT    UPLSTD (CHAR Format)
------   --------   --------------------
ABCD      ABCDEFG   190821

下面是一个表达式,可用于将 CHAR 字段转换为真正的 DATE 格式。

日期(TO_DATE(ACHARDATE, 'YYMMDD'((

希望对您有所帮助!

或者,您可以使用此选项,但在我看来它更令人困惑:

DATE('20' || SUBSTR(ACHARDATE,1,2) ||'-' ||
SUBSTR(ACHARDATE,3,2) ||'-' ||
SUBSTR(ACHARDATE,5,2))

我想它应该像插入一样工作create table name ( col1 varchar, col2 ..) as select col1, to_char(col2)...

CREATE TABLE ResultB (UPURF 
VARCHAR(20), UPTEXT 
VARCHAR(20) 
, UPLSTD VARCHAR(20))AS
(SELECT UPUPRF,
UPTEXT,
TO_CHAR(UPLSTD)
FROM SourceA
WHERE 
to_date(SUBSTR(DIGITS(UPLSTD), 
27, 6), 'RRMMDD') < 
CURRENT_DATE - 10 DAYS)
WITH DATA

最新更新