@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:

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.

'CC', 19 or 'CC', 20
'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.

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