@DATE

Use a função @DATE para retornar datas e horas em uma variedade de formatos para a coluna de destino com base no formato passado para a coluna de origem. @DATE converte praticamente qualquer tipo de entrada em uma data SQL válida. @DATE também pode ser usado para extrair partes de uma coluna de data ou para calcular uma coluna de timestamp numérico com base em uma data. A função

Sintaxe

@DATE ('<output_descriptor>', '<input_descriptor>', <source_column>
[, '<input_descriptor>', <source_column>] [, ...])

<'output_descriptor'>

A saída da função. O valor válido é uma string composta por descritores de data e valores literais opcionais, como espaços ou dois-pontos, que são exigidos pela coluna de destino. Os descritores de data podem ser agrupados conforme necessário. Consulte Tabela 3-1 para obter descrições de descritores de data. O descritor de formato deve corresponder ao formato date/time/timestamp do destino. O Oracle GoldenGate substitui o formato especificado para corrigi-lo, se necessário.

<'input_descriptor'>

A entrada de origem. O valor válido é uma string composta de descritores de data e valores literais opcionais, como espaços ou dois-pontos. Os descritores de data podem ser agrupados conforme necessário. Seguem alguns exemplos:

Consulte a Tabela 3-1 para obter descrições de data.

<source_column>

O nome da coluna de origem numérica ou de caracteres que fornece a entrada especificada com <input_descriptor>.

Descritores de Data da Tabela 1

Descritor Descrição Válido para…
CC Século Entrada/Saída
YY Ano com dois dígitos Entrada/Saída
`AAAA` Ano com quatro dígitos Entrada/Saída
`MM` Mês numérico Entrada/Saída
MMM Mês alfanumérico, como APR, OCT Entrada/Saída
`DD` Dia numérico do mês Entrada/Saída
DDD Dia numérico do ano, como 001 ou 365 Entrada/Saída
DOW0 Dia numérico da semana (domingo = 0) Entrada/Saída
DOW1 Dia numérico da semana (domingo = 1) Entrada/Saída
DOWA Dia alfanumérico da semana, como SUN, MON, TUE Entrada/Saída
HH Hora Entrada/Saída
MI Minuto Entrada/Saída
`SS` Segundos Entrada/Saída
JTSLCT Use para um timestamp juliano que já esteja no horário local ou para manter o horário local ao converter para um timestamp juliano. Entrada/Saída
GERENCIAMENTO Timestamp juliano, igual a JTS. Entrada/Saída
`JTS` Timestamp juliano. JUL e JTS produzem números que você pode usar em expressões numéricas. A unidade é microssegundos. Em uma máquina Windows, o valor será preenchido com zeros (0) porque a granularidade do timestamp do Windows é de milissegundos. Entrada/Saída
`JUL` Dia juliano. JUL e JTS produzem números que você pode usar em expressões numéricas. Entrada/Saída
TTS (conversão de texto em fala) NonStop timestamp de 48 bits Entrada
`PHAMIS` PHAMIS formato de data do aplicativo Entrada
FFFFFF Fração (até microssegundos) Entrada/Saída
`ESTRATO` Timestamp do aplicativo STRATUS Entrada/Saída
CDATE C timestamp em segundos desde a Época Entrada/Saída

Suporte ao formato de data e hora ISO 8601

O Oracle GoldenGate suporta o ISO 8601, que é um formato reconhecido internacionalmente para representar data, hora e fuso horário. A seguir estão os descritores de entrada/saída para este formato ISO 8601:

Descritores de Data da Tabela 2

Descritor Descrição Válido para…
ISO8601_DATETIME Formato de data e hora ISO 8601 com fuso horário opcional. Equivalente a YYYY-MM-DDTHH:MI:SSTZ. Entrada/Saída
ISO8601_DATETIME_FRACT Formato de data e hora ISO 8601 com segundos fracionais opcionais e fuso horário opcional. Equivalente a YYYY-MM-DDTHH:MI:SS.FFFFFFTZ. Entrada/Saída
HORÁRIO A especificação de fuso horário aceita +/-HH:MI ou região ID, como America/New_York. Entrada/Saída

Exemplos

Exemplo 1

Em um caso em que um ano com dois dígitos é fornecido, mas um ano com quatro dígitos é necessário na saída, existem várias opções para obter o século correto.

'CC', 19 or 'CC', 20
'CC', @IF (YY > 70, 19, 20)

Isso faz com que o século seja definido como 19 quando o ano for maior que 70; caso contrário, o século será definido como 20.

Exemplo 2

Os itens a seguir convertem as colunas ano, mês e dia em uma data.

date_col = @DATE ('YYYY-MM-DD', 'YY', date1_yy, 'MM', date1_mm, 'DD', date1_dd)

Exemplo 3

A opção a seguir converte uma data e hora, padronizando segundos como zero.

date_col = @DATE ('YYYY-MM-DD HH:MI:00', 'YYMMDD', date1, 'HHMI', time1)

Exemplo 4

A seguir, uma coluna numérica armazenada como YYYYMMDDHHMISS é convertida em uma data SQL.

datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'YYYYMMDDHHMISS', numeric_date)

Exemplo 5

A seguir, converte uma coluna numérica armazenada como YYYYMMDDHHMISS em um timestamp juliano.

julian_ts_col = @DATE ('JTS', 'YYYYMMDDHHMISS', numeric_date)

Exemplo 6

A opção a seguir converte uma coluna de timestamp juliano em duas colunas separadas: uma coluna de data e hora no formato YYYY-MM-DD HH:MI:SS e uma coluna de fração que contém a parte de microssegundos do timestamp.

datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS', jts_field), fraction_col = @DATE ('FFFFFF', 'JTS', jts_field)

Exemplo 7

A opção a seguir converte uma coluna numérica armazenada como YYYYMMDDHHMISS em um formato ISO 8601.

iso_datetime_col = @DATE ('YYYY-MM-DDTHH:MI:SSTZ', 'YYYYMMDDHHMISS', numeric_date)

Exemplo 8

O seguinte faz um cálculo completo de horas. Ela vai de uma coluna de data de origem chamada dt para uma coluna de destino chamada dt5 que será convertida na data + 5 horas. O cálculo também vai de uma coluna de timestamp de origem chamada ts para uma coluna de destino chamada ts5 que será convertida para o timestamp + 5 horas.

MAP scratch.t4, TARGET scratch.t4_copy,
COLMAP ( USEDEFAULTS,
dt5 = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS',
@COMPUTE (@DATE ('JTS', 'YYYY-MM-DD HH:MI:SS', dt) + 18000000000 ) ),
ts5 = @DATE ('YYYY-MM-DD HH:MI:SS.FFFFFF', 'JTS',
@COMPUTE ( @DATE ('JTS', 'YYYY-MM-DD HH:MI:SS.FFFFFF', ts) + 18000000000 ) )
) ;