@DATE
Utilizzare la funzione @DATE per restituire date e ore in vari formati alla colonna di destinazione in base al formato passato nella colonna di origine. @DATE converte praticamente qualsiasi tipo di input in una data SQL valida. @DATE può essere utilizzato anche per estrarre parti di una colonna data o per calcolare una colonna con indicatore orario numerico in base a una data. La funzione
Sintassi
@DATE ('<output_descriptor>', '<input_descriptor>', <source_column>
[, '<input_descriptor>', <source_column>] [, ...])
<'output_descriptor'>
L'output della funzione. Il valore valido è una stringa composta da descrittori di data e valori letterali facoltativi, ad esempio spazi o due punti, richiesti dalla colonna di destinazione. I descrittori di data possono essere uniti in base alle esigenze. Per una descrizione dei descrittori di data, vedere la Tabella 3-1. Il descrittore di formato deve corrispondere al formato date/time/timestamp per la destinazione. Oracle GoldenGate esegue l'override del formato specificato per renderlo corretto, se necessario.
<'input_descriptor'>
Input di origine. Il valore valido è una stringa composta da descrittori di data e valori letterali facoltativi, ad esempio spazi o due punti. I descrittori di data possono essere uniti in base alle esigenze. Di seguito sono riportati alcuni esempi:
-
La stringa del descrittore
'YYYYMMDD' indica che la colonna di origine specificata con<source_column>contiene (in ordine) un anno a quattro cifre (YYYY), un mese (MM) e un giorno (DD). -
La stringa del descrittore
'DD/MM/YY' indica che la colonna di origine specificata con<source_column>contiene il giorno, una barra, il mese, una barra e l'anno a due cifre.
Per le descrizioni delle date, vedere la Tabella 3-1.
<source_column>
Nome della colonna di origine numerica o di carattere che fornisce l'input specificato con <input_descriptor>.
Descrittori data tabella 1
| Descrittore | Descrizione | Valido per… |
|---|---|---|
| CC | Secolo | Input/output |
| SÌ | Anno a due cifre | Input/output |
| `YYYY` | Anno a quattro cifre | Input/output |
| `MM` | Mese numerico | Input/output |
| MMM | Mese alfanumerico, ad esempio APR, OCT |
Input/output |
| `DD` | Giorno numerico del giorno del mese | Input/output |
| DDD | Giorno numerico dell'anno, ad esempio 001 o 365 |
Input/output |
| DOW0 | Giorno numerico della settimane (domenica = 0) |
Input/output |
| DOW1 | Giorno numerico della settimane (domenica = 1) |
Input/output |
| DOWA | Giorno alfanumerico della settimana, ad esempio SUN, MON, TUE |
Input/output |
| HH | Ora | Input/output |
| MI | Minuto | Input/output |
| `SS` | Secondi | Input/output |
| JTSLCT | Utilizzare per un indicatore orario giuliano che è già ora locale o per mantenere l'ora locale quando si esegue la conversione in un indicatore orario giuliano. | Input/output |
| GESTIONE CONTATTI | Indicatore orario giuliano, uguale a JTS. |
Input/output |
| `JTS` | Indicatore orario giuliano. JUL e JTS producono numeri che è possibile utilizzare in espressioni numeriche. L'unità è microsecondi. Su un computer Windows, il valore verrà riempito con zeri (0) perché la granularità dell'indicatore orario di Windows è in millisecondi. |
Input/output |
| `LUG` | Giorno giuliano. JUL e JTS producono numeri che è possibile utilizzare in espressioni numeriche. |
Input/output |
| TTS | NonStop Indicatore orario a 48 bit | Input |
| `PHAMIS` | Formato data dell'applicazione PHAMIS |
Input |
| FFFFFF | Frazione (fino a microsecondi) | Input/output |
| `STRATO` | Indicatore orario applicazione STRATUS |
Input/output |
| CDATE | Indicatore orario C in secondi dall'epoca | Input/output |
Supporto del formato data/ora ISO 8601
Oracle GoldenGate supporta ISO 8601, un formato riconosciuto a livello internazionale per rappresentare data, ora e fuso orario. Di seguito sono riportati i descrittori di input/output per questo formato ISO 8601.
Descrittori data tabella 2
| Descrittore | Descrizione | Valido per… |
|---|---|---|
| ISO8601_DATETIME | Formato data/ora ISO 8601 con fuso orario facoltativo. Equivalente a YYYY-MM-DDTHH:MI:SSTZ. |
Input/output |
| ISO8601_DATETIME_FRACT | Formato data-ora ISO 8601 con secondi frazionari opzionali e fuso orario opzionale. Equivalente a YYYY-MM-DDTHH:MI:SS.FFFFFFTZ. |
Input/output |
| FUSO ORARIO | La specifica del fuso orario accetta +/-HH:MI o l'area ID, ad esempio America/New_York. |
Input/output |
Esempi
Esempio 1
In un caso in cui viene fornito un anno a due cifre, ma è richiesto un anno a quattro cifre nell'output, esistono diverse opzioni per ottenere il secolo corretto.
- Il secolo può essere duro codificato, come in:
'CC', 19 or 'CC', 20
- La funzione
@IFpuò essere utilizzata per impostare una condizione, come in:
'CC', @IF (YY > 70, 19, 20)
Questo fa sì che il secolo sia impostato a 19 quando l'anno è maggiore di 70; altrimenti il secolo è impostato a 20.
- Il sistema può calcolare il secolo automaticamente. Se l'anno è inferiore a 50, il sistema calcola un secolo di 20; altrimenti, viene calcolato un secolo di 19.
Esempio 2
Le colonne anno, mese e giorno vengono convertite in una data.
date_col = @DATE ('YYYY-MM-DD', 'YY', date1_yy, 'MM', date1_mm, 'DD', date1_dd)
Esempio 3
Di seguito viene convertita una data e un'ora, impostando il valore predefinito dei secondi su zero.
date_col = @DATE ('YYYY-MM-DD HH:MI:00', 'YYMMDD', date1, 'HHMI', time1)
Esempio 4
Di seguito viene convertita una colonna numerica memorizzata come YYYYMMDDHHMISS in una data SQL.
datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'YYYYMMDDHHMISS', numeric_date)
Esempio 5
Di seguito viene convertita una colonna numerica memorizzata come YYYYMMDDHHMISS in un indicatore orario giuliano.
julian_ts_col = @DATE ('JTS', 'YYYYMMDDHHMISS', numeric_date)
Esempio 6
Di seguito viene convertita una colonna indicatore orario giuliano in due colonne separate: una colonna dataora nel formato YYYY-MM-DD HH:MI:SS e una colonna frazione che contiene la parte microsecondi dell'indicatore orario.
datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS', jts_field), fraction_col = @DATE ('FFFFFF', 'JTS', jts_field)
Esempio 7
Di seguito viene convertita una colonna numerica memorizzata come YYYYMMDDHHMISS in un formato ISO 8601.
iso_datetime_col = @DATE ('YYYY-MM-DDTHH:MI:SSTZ', 'YYYYMMDDHHMISS', numeric_date)
Esempio 8
Di seguito viene eseguito un calcolo completo dei tempi. Passa da una colonna data di origine denominata dt a una colonna di destinazione denominata dt5 da convertire in data + 5 ore. Il calcolo va anche da una colonna indicatore orario di origine denominata ts a una colonna di destinazione denominata ts5 da convertire in indicatore orario + 5 ore.
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 ) )
) ;