Sumário

Search

  1. Prefácio
  2. A Linguagem de Transformação
  3. Constantes
  4. Operadores
  5. Variáveis
  6. Datas
  7. Funções
  8. Criação de funções personalizadas
  9. Referência de API da Função Personalizada

Referência de Linguagem de Transformação

Referência de Linguagem de Transformação

TO_DATE

TO_DATE

Converte uma string de caracteres em um tipo de dados Data/Hora. Use as strings de formato TO_DATE para especificar o formato das strings de origem.
A porta de saída deve ser Data/Hora para expressões TO_DATE.
Se você estiver convertendo anos de dois dígitos com TO_DATE, use a string de formato RR ou YY. Não use a string de formato YYYY.

Sintaxe

TO_DATE(
string
[,
format
] )
A tabela a seguir descreve os argumentos para este comando:
Argumento
Requerido/
Opcional
Descrição
string
Requerido
Deve ser um tipo de dados de string. Passa os valores que você deseja converter em datas. Você pode inserir qualquer expressão de transformação válida.
formato
Opcional
Insira uma string de formato TO_DATE válida. A string de formato deve corresponder às partes do argumento
string
. Por exemplo, se você passar a string 'Mar 15 1998 12:43:10AM', será necessário usar a string de formato 'MON DD YYYY HH12:MI:SSAM'. Se você omitir a string de formato, o valor da string deverá estar no formato de data especificado na sessão.

Valor de Retorno

Data.
TO_DATE sempre retorna uma data e uma hora. Se você passar uma string que não tem um valor de hora, a data retornada incluirá a hora 00:00:00.000000000. Você pode mapear os resultados dessa função para qualquer coluna de destino que tenha um tipo de dados de data e hora. Se a precisão da coluna de destino for menor que nanossegundos, o
Serviço de Integração do PowerCenter
truncará o valor datetime para corresponder à precisão da coluna de destino ao gravar valores datetime no destino.
NULL se você passar um valor nulo para essa função.
O formato da string TO_DATE deve corresponder à string de formato, incluindo quaisquer separadores de data. Se não, o
Serviço de Integração do PowerCenter
talvez retorne valores imprecisos ou ignore o registro.

Exemplos

A expressão a seguir retorna valores de data para as strings na porta DATE_PROMISED. TO_DATE sempre retorna uma data e uma hora. Se você passar uma string que não tem um valor de hora, a data retornada incluirá a hora 00:00:00.000000000. Se você executar uma sessão no século vinte, o século será 19. Nesse exemplo, o ano atual no nó que executa o
Serviço de Integração do PowerCenter
é 1998. O formato datetime da coluna de destino é MON DD YY HH24:MI SS, e assim o
Serviço de Integração do PowerCenter
trunca o valor datetime em segundos ao gravar no destino:
TO_DATE( DATE_PROMISED, 'MM/DD/YY' )
DATE_PROMISED
RETURN VALUE
'01/22/98'
Jan 22 1998 00:00:00
'05/03/98'
May 3 1998 00:00:00
'11/10/98'
Nov 10 1998 00:00:00
'10/19/98'
Oct 19 1998 00:00:00
NULL
NULL
A expressão a seguir retorna valores de data para as strings na porta DATE_PROMISED. Se você passar uma string que não tenha valor de hora, o
Serviço de Integração do PowerCenter
retornará um erro. Se você executar uma sessão no século vinte, o século será 19. O ano atual no nó que executa o
Serviço de Integração do PowerCenter
é 1998:
TO_DATE( DATE_PROMISED, 'MON DD YYYY HH12:MI:SSAM' )
DATE_PROMISED
RETURN VALUE
'Jan 22 1998 02:14:56PM'
Jan 22 1998 02:14:56PM
'Mar 15 1998 11:11:11AM'
Mar 15 1998 11:11:11AM
'Jun 18 1998 10:10:10PM'
Jun 18 1998 10:10:10PM
'October 19 1998'
Error. Integration Service skips this row.
NULL
NULL
A seguinte expressão converte strings na porta SHIP_DATE_MJD_STRING em valores de data:
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
RETURN_VALUE
'2451544'
Dec 31 1999 00:00:00.000000000
'2415021'
Jan 1 1900 00:00:00.000000000
Como a string de formato J não inclui a parte de tempo de uma data, os valores retornados têm a hora definida como 00:00:00.000000000.
A expressão a seguir converte uma string em um formato de ano de quatro dígitos. O ano atual é 1998:
TO_DATE( DATE_STR, 'MM/DD/RR')
DATE_STR
RETURN VALUE
'04/01/98'
04/01/1998 00:00:00.000000000
'08/17/05'
08/17/2005 00:00:00.000000000
A expressão a seguir converte uma string em um formato de ano de quatro dígitos. O ano atual é 1998:
TO_DATE( DATE_STR, 'MM/DD/YY')
DATE_STR
RETURN VALUE
'04/01/98'
04/01/1998 00:00:00.000000000
'08/17/05'
08/17/1905 00:00:00.000000000
Na segunda linha, RR retorna o ano 2005 e YY retorna o ano 1905.
A expressão a seguir converte uma string em um formato de ano de quatro dígitos. O ano atual é 1998:
TO_DATE( DATE_STR, 'MM/DD/Y')
DATE_STR
RETURN VALUE
'04/01/8'
04/01/1998 00:00:00.000000000
'08/17/5'
08/17/1995 00:00:00.000000000
A expressão a seguir converte uma string em um formato de ano de quatro dígitos. O ano atual é 1998:
TO_DATE( DATE_STR, 'MM/DD/YYY')
DATE_STR
RETURN VALUE
'04/01/998'
04/01/1998 00:00:00.000000000
'08/17/995'
08/17/1995 00:00:00.000000000
A seguinte expressão converte strings que incluem os segundos desde a meia-noite em valores de data:
TO_DATE( DATE_STR, 'MM/DD/YYYY SSSSS')
DATE_STR
RETURN_VALUE
'12/31/1999 3783'
12/31/1999 01:02:03
'09/15/1996 86399'
09/15/1996 23:59:59
Se o destino aceitar formatos de data diferentes, use TO_DATE e IS_DATE com a função DECODE para testar formatos aceitáveis. Por exemplo:
DECODE( TRUE,  --test first format    IS_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ),  --if true, convert to date       TO_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ),  --test second format; if true, convert to date    IS_DATE( CLOSE_DATE,'MM/DD/YYYY'), TO_DATE( CLOSE_DATE,'MM/DD/YYYY' ),  --test third format; if true, convert to date    IS_DATE( CLOSE_DATE,'MON DD YYYY'), TO_DATE( CLOSE_DATE,'MON DD YYYY'),  --if none of the above    ERROR( 'NOT A VALID DATE') )
Você pode combinar TO_CHAR e TO_DATE para converter um valor numérico de um mês no valor de texto de um mês usando uma função, como:
TO_CHAR( TO_DATE( numeric_month, 'MM' ), 'MONTH' )