@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 :
-
La chaîne de descripteur
'YYYYMMDD' indique que la colonne source spécifiée avec<source_column>contient (dans l'ordre) une année à quatre chiffres (YYYY), un mois (MM) et un jour (DD). -
La chaîne de descripteur
'DD/MM/YY' indique que la colonne source spécifiée avec<source_column>contient le jour, une barre oblique, le mois, une barre oblique et l'année à deux chiffres.
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.
- Le siècle peut être codé en dur, comme dans :
'CC', 19 or 'CC', 20
- La fonction
@IFpeut être utilisée pour définir une condition, comme dans :
'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.
- Le système peut calculer le siècle automatiquement. Si l'année est inférieure à 50, le système calcule un siècle de 20 ; sinon, un siècle de 19 est calculé.
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 ) )
) ;