Teradata-将'yyyy-mm-dd'转换为YYYY-MM

问题描述 投票:0回答:1

我在更改DATE格式列(CREATE_DT)('yyyy-mm-dd')时遇到问题,但我想创建仅具有('yyyy-mm')的新列CREATE_Month

我已经尝试过

SELECT DATE_FORMAT(CREATE_DT,'%Y%m') 
from SCHEMA.Tables

select * 
from (
  Select top 100 *
  from SCHEMA.Tables
  where cast(CREATE_DT AS DATE)  
) AS CREATE_Month

下面是我的CREATE表代码,如果有帮助的话,

CREATE MULTISET TABLE SCHEMA.Tables ,NO FALLBACK ,
  NO BEFORE JOURNAL,
  NO AFTER JOURNAL,
  CHECKSUM = DEFAULT,
  DEFAULT MERGEBLOCKRATIO
  (     
    ACCT_ID INTEGER NOT NULL,
    CREATE_DT DATE FORMAT 'yyyy-mm-dd'
PRIMARY INDEX ( ACCT_ID );

我希望解决方案有3列

ACCT_ID INTEGER NOT NULL,
CREATE_DT DATE FORMAT 'yyyy-mm-dd',
CREATE_Month (derived from CREATE_DT)

[如果有人可以帮助,那就太好了。在此先感谢

datetime casting teradata converters
1个回答
0
投票

您是要向表中添加新的“月”字段,还是只想格式化CREATE_DT查询中的SELECT字段格式?

没有“月”数据类型,因此,如果要添加CREATE_Month字段,则可以做几件事:

  1. 创建一个新的DATE字段,然后将day部分默认为每月的第一天
  2. 创建一个新的VARCHAR(10)并将其存储为字符串

如果要基于此字段访问行,则选项#1可能更好(允许进行日期分区)。如果您仅使用它进行显示,那么任何一个都可以使用。

如果只想以其他格式返回CREATE_DT,则可以使用此方法:

SELECT CREATE_DT (FORMAT 'YYYY-MM-DD')
© www.soinside.com 2019 - 2024. All rights reserved.