@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:
-
La cadena de descriptor
'YYYYMMDD' indica que la columna de origen especificada con<source_column>contiene (en orden) un año de cuatro dígitos (YYYY), un mes (MM) y un día (DD). -
La cadena de descriptor
'DD/MM/YY' indica que la columna de origen especificada con<source_column>contiene el día, una barra, el mes, una barra y el año de dos dígitos.
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.
- El siglo puede ser codificado, como en:
'CC', 19 or 'CC', 20
- La función
@IFse puede utilizar para definir una condición, como en:
'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.
- El sistema puede calcular el siglo automáticamente. Si el año es inferior a 50, el sistema calcula un siglo de 20; de lo contrario, se calcula un siglo de 19.
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 ) )
) ;