Trabalhar com datas em Teradata

estou tentando inserir alguns dados em um banco de dados Teradata, essa informação foi originalmente exportada de uma instância Oracle, mas eu tenho um pequeno problema com as datas, Aqui está um exemplo dos dados:

    CO_ID  | CUSTOMER_NAME  | JOIN_DATE
   1022945 | John Carpenter | 07/03/2018 01:55:24 p.m. 

e esta é a tabela Criar:

CREATE TABLE transact (
co_id varchar(50),
user_name varchar(50),
join_date date);

Teradata está a cometer um erro sempre que executo a instrução inserir, por exemplo:

expected something between a string and a unicode character ...

Como posso inserir a informação mantendo o formato original da data, tenho de modificar a tabela criar ou há outro truque?

Obrigado.

Author: a_horse_with_no_name, 2018-03-08

1 answers

Na Teradata uma data é uma data (sem a parte do tempo). Para a inserção você tem que converter o texto de entrada em uma data válida.

Algo como

select cast('07/03/2018' as date format 'DD/MM/YYYY');
select cast(substr(input.join_date,1,10) as date format 'DD/MM/YYYY');

Se lançar um texto as date então a cláusula format é uma descrição de como as partes de texto são usadas para converter num formato de data interna.

Se seleccionar a partir de uma coluna de data, a cláusula format é usada para descrever o formato de saída desejado.

select cast( cast('07/03/2018' as date format 'DD/MM/YYYY') as date format 'YYYY-MM-DD')

Se adicionar uma cláusula format à sua mesa definição join_date date 'DD/MM/YYYY', Você define o formato por omissão para essa coluna, que é usado como o formato de saída sempre que não é indicado nenhum formato explícito.

Se você quiser usar a parte do tempo também, a sua coluna alvo precisa ser um timestamp

select cast( cast(regexp_replace('07/03/2018 01:55:24 p.m.','\.m\.', 'M')
    as timestamp format 'MM/DD/YYBHH:MI:SS BT') as timestamp format 'YYYY-MM-DDBHH:MI:SS')

Formato documentação da frase

 0
Author: ULick, 2018-03-08 22:04:59