@DATE

Utilisez la fonction @DATE pour renvoyer des dates et des heures dans divers formats vers la colonne cible en fonction du format transmis dans la colonne source. @DATE convertit pratiquement tous les types d'entrée en une date SQL valide. @DATE peut également être utilisé pour extraire des parties d'une colonne de date ou pour calculer une colonne d'horodatage numérique en fonction d'une date. La fonction

Syntaxe

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

<'output_descriptor'>

La sortie de la fonction. La valeur valide est une chaîne composée de descripteurs de date et de valeurs littérales facultatives, telles que des espaces ou des deux-points, requises par la colonne cible. Les descripteurs de date peuvent être reliés ensemble si nécessaire. Pour une description des descripteurs de date, reportez-vous au Table 3-1. Le descripteur de format doit correspondre au format date/time/timestamp pour la cible. Oracle GoldenGate remplace le format indiqué pour le rendre correct, si nécessaire.

<'input_descriptor'>

Entrée source. La valeur valide est une chaîne composée de descripteurs de date et de valeurs littérales facultatives, telles que des espaces ou des points-virgules. Les descripteurs de date peuvent être reliés ensemble si nécessaire. Voici des exemples :

Pour obtenir une description des dates, reportez-vous au Table 3-1.

<source_column>

Nom de la colonne de source numérique ou alphanumérique qui fournit l'entrée spécifiée avec <input_descriptor>.

Tableau 1 Descripteurs de date

Descripteur Description Valide pour…
CC Siècle Entrée/Sortie
YY Année à deux chiffres Entrée/Sortie
`AAAA` Année à quatre chiffres Entrée/Sortie
`MM` Mois numérique Entrée/Sortie
MMM Mois alphanumérique, tel que APR, OCT Entrée/Sortie
`DD` Jour du mois, en chiffres Entrée/Sortie
DDD Jour numérique de l'année (001 ou 365, par exemple) Entrée/Sortie
DOW0 Jour numérique de la semaine (dimanche = 0) Entrée/Sortie
DOW1 Jour numérique de la semaine (dimanche = 1) Entrée/Sortie
DOWA Jour alphanumérique de la semaine, tel que SUN, MON, TUE Entrée/Sortie
HH Heure Entrée/Sortie
MI Minute Entrée/Sortie
`SS` Secondes Entrée/Sortie
JTSLCT Utilisez pour un horodatage julien qui est déjà l'heure locale ou pour conserver l'heure locale lors de la conversion en horodatage julien. Entrée/Sortie
JTSGMT Horodatage julien, identique à JTS. Entrée/Sortie
`JTS` Horodatage julien. JUL et JTS produisent des nombres que vous pouvez utiliser dans des expressions numériques. L'unité est de microsecondes. Sur une machine Windows, la valeur est complétée par des zéros (0) car la granularité de l'horodatage Windows est de la milliseconde. Entrée/Sortie
"JUIL" Jour julien. JUL et JTS produisent des nombres que vous pouvez utiliser dans des expressions numériques. Entrée/Sortie
TTS Horodatage 48 bits NonStop Entrée
`PHAMIS` PHAMIS format de date d'application Entrée
FFFFFF Fraction (jusqu'à des microsecondes) Entrée/Sortie
`STRATTE' STRATUS horodatage de l'application Entrée/Sortie
CDATE Horodatage C en secondes depuis l'époque Entrée/Sortie

Prise en charge du format de date/heure ISO 8601

Oracle GoldenGate prend en charge ISO 8601, qui est un format reconnu internationalement pour représenter la date, l'heure et le fuseau horaire. Les descripteurs d'entrée/sortie pour ce format ISO 8601 sont les suivants :

Tableau 2 Descripteurs de date

Descripteur Description Valide pour…
ISO8601_DATETIME Format de date/heure ISO 8601 avec fuseau horaire facultatif. équivalent à YYYY-MM-DDTHH:MI:SSTZ. Entrée/Sortie
ISO8601_DATETIME_FRACT Format de date-heure ISO 8601 avec fractions de seconde facultatives et fuseau horaire facultatif. équivalent à YYYY-MM-DDTHH:MI:SS.FFFFFFTZ. Entrée/Sortie
TIMEZN La spécification de fuseau horaire accepte +/-HH:MI ou la région ID, telle que America/New_York. Entrée/Sortie

Exemples

Exemple 1

Dans le cas où une année à deux chiffres est fournie, mais qu'une année à quatre chiffres est requise dans la sortie, plusieurs options existent pour obtenir le siècle correct.

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

Cela fait que le siècle est fixé à 19 lorsque l'année est supérieure à 70 ; sinon, le siècle est fixé à 20.

Exemple 2

Les colonnes Année, Mois et Jour sont converties en une date.

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

Exemple 3

La commande suivante convertit une date et une heure, les secondes par défaut étant nulles.

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

Exemple 4

La commande suivante convertit une colonne numérique stockée en tant que YYYYMMDDHHMISS en date SQL.

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

Exemple 5

La commande suivante convertit une colonne numérique stockée sous la forme YYYYMMDDHHMISS en horodatage julien.

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

Exemple 6

Les éléments suivants convertissent une colonne d'horodatage julien en deux colonnes distinctes : une colonne de date/heure au format YYYY-MM-DD HH:MI:SS et une colonne de fraction contenant la partie microsecondes de l'horodatage.

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

Exemple 7

La commande suivante convertit une colonne numérique stockée sous la forme YYYYMMDDHHMISS au format ISO 8601.

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

Exemple 8

Ce qui suit effectue un calcul complet des temps. Elle va d'une colonne de date source nommée dt à une colonne cible nommée dt5 qui doit être convertie en date + 5 heures. Le calcul passe également d'une colonne d'horodatage source nommée ts à une colonne cible nommée ts5 qui doit être convertie en horodatage + 5 heures.

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 ) )
) ;