@DATE

Utilice la función @DATE para devolver fechas y horas en diversos formatos a la columna de destino según el formato transferido a la columna de origen. @DATE convierte prácticamente cualquier tipo de entrada en una fecha SQL válida. @DATE también se puede utilizar para extraer partes de una columna de fecha o para calcular una columna de registro de hora numérica basada en una fecha. La función

Sintaxis

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

<'output_descriptor'>

La salida de la función. El valor válido es una cadena que se compone de descriptores de fecha y valores literales opcionales, como espacios o dos puntos, que son necesarios para la columna de destino. Los descriptores de fecha se pueden unir según sea necesario. Consulte la Tabla 3-1 para obtener descripciones de los descriptores de fecha. El descriptor de formato debe coincidir con el formato date/time/timestamp para el destino. Oracle GoldenGate sustituye el formato especificado para que sea correcto, si es necesario.

<'input_descriptor'>

La entrada de origen. El valor válido es una cadena que se compone de descriptores de fecha y valores literales opcionales, como espacios o dos puntos. Los descriptores de fecha se pueden unir según sea necesario. A continuación se muestran ejemplos:

Consulte la Tabla 3-1 para obtener descripciones de fecha.

<source_column>

Nombre de la columna numérica o de origen de caracteres que proporciona la entrada especificada con <input_descriptor>.

Tabla 1 Descriptores de fecha

Descriptor Descripción Válido para…
CC Siglo Entrada/Salida
SÍ Año de dos dígitos Entrada/Salida
`AAAA` Año de cuatro dígitos Entrada/Salida
`MM` Mes numérico Entrada/Salida
MMM Mes alfanumérico, como APR, OCT Entrada/Salida
`DD` Número de día de mes Entrada/Salida
DDD Día numérico del año, como 001 o 365 Entrada/Salida
DOW0 Día numérico de la semana (domingo = 0) Entrada/Salida
DOW1 Día numérico de la semana (domingo = 1) Entrada/Salida
DOWA Día alfanumérico de la semana, como SUN, MON, TUE Entrada/Salida
HH Hora Entrada/Salida
MI Minuto Entrada/Salida
`SS` Segundos Entrada/Salida
PORCENTAJE Se utiliza para un registro de hora juliano que ya es hora local o para mantener la hora local al convertirlo a un registro de hora juliano. Entrada/Salida
GESTIÓN Registro de hora juliano, igual que JTS. Entrada/Salida
`JTS` Registro de hora juliano. JUL y JTS producen números que puede utilizar en expresiones numéricas. La unidad es de microsegundos. En una máquina Windows, el valor se rellenará con ceros (0) porque la granularidad del registro de hora de Windows es de milisegundos. Entrada/Salida
`JUL` Día juliano. JUL y JTS producen números que puede utilizar en expresiones numéricas. Entrada/Salida
TTS Registro de hora de 48 bits NonStop Entrada
`PHAMIS` PHAMIS formato de fecha de aplicación Entrada
FFFFFF Fracción (hasta microsegundos) Entrada/Salida
`ESTRATO` Registro de hora de la aplicación STRATUS Entrada/Salida
CDATE Registro de hora C en segundos desde la época Entrada/Salida

Soporte de formato de fecha y hora ISO 8601

Oracle GoldenGate soporta ISO 8601, que es un formato reconocido internacionalmente para representar la fecha, la hora y la zona horaria. A continuación se muestran los descriptores de entrada/salida para este formato ISO 8601:

Tabla 2 Descriptores de fecha

Descriptor Descripción Válido para…
ISO8601_DATETIME Formato de fecha y hora ISO 8601 con zona horaria opcional. Equivalente a YYYY-MM-DDTHH:MI:SSTZ. Entrada/Salida
ISO8601_DATETIME_FRACT Formato de fecha y hora ISO 8601 con segundos fraccionarios opcionales y zona horaria opcional. Equivalente a YYYY-MM-DDTHH:MI:SS.FFFFFFTZ. Entrada/Salida
HORAZN La especificación de zona horaria acepta +/-HH:MI o la región ID, como America/New_York. Entrada/Salida

Ejemplos

Ejemplo 1

En un caso en el que se proporciona un año de dos dígitos, pero se requiere un año de cuatro dígitos en la salida, existen varias opciones para obtener el siglo correcto.

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

Esto hace que el siglo se establezca en 19 cuando el año es mayor que 70; de lo contrario, el siglo se establece en 20.

Ejemplo 2

A continuación, se convierten las columnas de año, mes y día en una fecha.

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

Ejemplo 3

A continuación, se convierte una fecha y hora, con segundos por defecto en cero.

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

Ejemplo 4

A continuación, se convierte una columna numérica almacenada como YYYYMMDDHHMISS en una fecha SQL.

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

Ejemplo 5

A continuación, se convierte una columna numérica almacenada como YYYYMMDDHHMISS en un registro de hora juliano.

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

Ejemplo 6

Lo siguiente convierte una columna de registro de hora juliana en dos columnas separadas: una columna de fecha y hora con el formato YYYY-MM-DD HH:MI:SS y una columna de fracción que contiene la parte de microsegundos del registro de hora.

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

Ejemplo 7

A continuación, se convierte una columna numérica almacenada como YYYYMMDDHHMISS a un formato ISO 8601.

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

Ejemplo 8

Lo siguiente hace un cálculo completo de los tiempos. Va de una columna de fecha de origen denominada dt a una columna de destino denominada dt5 que se va a convertir a la fecha + 5 horas. El cálculo también pasa de una columna de registro de hora de origen denominada ts a una columna de destino denominada ts5 que se va a convertir al registro de hora + 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 ) )
) ;