Domanda

Sto creando un file di output ASCII contenente alcune informazioni e due dei miei campi richiedono la data e il tempo per essere in campi decimali imballati (COMP-3). Sto usando SQL e SSIS per generare il mio file.

Field Name     Format       Length    Picture
Date           YYYYMMDD     5         S9(8) C-3
Time           HHMMSS       4         S9(6) C-3

Ho cercato più siti e non riesco ancora a capire come convertire una data/ora in un campo decimale pieno. Qualsiasi aiuto sarebbe molto apprezzato.

Il seguente sito http://www.simotime.com/datapk01.htm#tablepackeddecimal è stato fornito per informazioni sui campi confezionati. Capisco come vengono utilizzati i campi pieni, ma non capisco davvero come mettere un campo. Grazie!

È stato utile?

Soluzione

Se memorizzi una data intero (cioè 20120123) come stringa di caratteri, la rappresentazione esadecimale sarebbe 0x3230313230313233 dove 32 = 2, 30 = 0 ecc.

In un formato decimale affollato la rappresentazione della stessa stringa sarebbe: 0x020120123f la f è un po 'per dimostrare che si tratta di un numero intero senza segno. Gli altri numeri sono memorizzati come metà di un byte per ogni cifra. Quindi puoi vedere che una stringa di data comune si adatterebbe in un campo a 5 byte (cioè 02 01 20 12 3f).

Quindi, per usarlo in SSIS, probabilmente dovresti fare come ha dichiarato @Billinkc sopra e utilizzare una trasformazione di script per trasformare il campo. La meccanica di questo sarebbe quella di contare le cifre nel tuo numero, pad con 0 a sinistra per ottenere i tuoi personaggi fino a 9 per comp-3 5 e 7 per comp-3 4 quindi costruire una stringa esadecimale con le cifre o tempo e aggiungi una F alla fine (o una C se la destinazione si aspetta un numero firmato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top