@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:
-
A string do descritor
'YYYYMMDD' indica que a coluna de origem especificada com<source_column>contém (em ordem) um ano de quatro dígitos (YYYY), um mês (MM) e um dia (DD). -
A string do descritor
'DD/MM/YY' indica que a coluna de origem especificada com<source_column>contém o dia, uma barra, o mês, uma barra e os dois dígitos do ano.
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.
- O século pode ser codificado, como acontece em:
'CC', 19 or 'CC', 20
- A função
@IFpode ser usada para definir uma condição, como em:
'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.
- O sistema pode calcular o século automaticamente. Se o ano for menor que 50, o sistema calculará um século de 20; caso contrário, um século de 19 será calculado.
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 ) )
) ;