Sql 我是否可以更改表B中使用CREATE Table作为SELECT FROM Table a创建的列的数据类型和最大长度?

Sql 我是否可以更改表B中使用CREATE Table作为SELECT FROM Table a创建的列的数据类型和最大长度?,sql,db2,create-table,Sql,Db2,Create Table,我希望将转换后的日期格式放在ResultB表中,而不是CHAR类型的日期,我正在寻找一种方法,在createtablestatein1go中实现这一点 我已使用源表SourceA中的数据子集成功创建了一个新表ResultB。 有一个包含日期的UPLSTD CHAR type列,为了与当前日期进行比较,我使用to_date函数将CHAR type dates转换为当前日期,这同样有效 CREATE TABLE ResultB AS (SELECT UPUPRF,

我希望将转换后的日期格式放在ResultB表中,而不是CHAR类型的日期,我正在寻找一种方法,在createtablestatein1go中实现这一点

我已使用源表SourceA中的数据子集成功创建了一个新表ResultB。 有一个包含日期的UPLSTD CHAR type列,为了与当前日期进行比较,我使用to_date函数将CHAR type dates转换为当前日期,这同样有效

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 (CHAR Format)
------   --------   --------------------
ABCD      ABCDEFG   190821

我想它应该像创建表名col1 varchar,col2.一样工作。。在选择列1时,要选择列2


下面是一个表达式,可用于将字符字段转换为真实日期格式

日期:年月日


希望有帮助

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

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

您好,确切地说,IBMDB2forII猜测它应该像一个插入一样工作,创建表名col1varchar,col2。。由于select col1、to_charcol2…日期数据类型没有任何内在格式,因此您希望它具有日期格式的意图令人困惑。您希望生成的UPLSTD是按您描述的格式格式化的字符数据类型,还是希望它是一个真实的日期?@HimanshuAhuja,谢谢您的提示,我会尝试一下。@Mustacio,嗨,谢谢您,我不知道,我假设日期类型可以选择如何格式化为YY-MM-DD或Julian DATE。。。。。为了回答您的问题,我更感兴趣的是在ResultB表中使用某种格式,即YYYY-MM-DD。
     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
DATE('20' || SUBSTR(ACHARDATE,1,2) ||'-' ||
     SUBSTR(ACHARDATE,3,2) ||'-' ||
     SUBSTR(ACHARDATE,5,2))