Informazioni sui seriali di data
Il valore archiviato in Oracle (42824
) è noto come data seriale , è utilizzato anche in Microsoft Excel
.
Data Seriale rappresenta il numero di giorni tra il valore della data e il valore iniziale che è 1899-12-30
Puoi leggere ulteriori informazioni sui numeri di serie su:
- Perché il 30/12/1899 è la data zero in Access/SQL Server invece del 31/12?
- convertire il numero di serie della data di Excel in data normale
Metodo CAST
Da Microsoft Docs - CAST e CONVERT (Transact-SQL):
Supportato solo durante il casting dai dati del personaggio a datetime o smalldatetime. Quando viene eseguito il cast di dati carattere che rappresentano solo componenti di data o solo ora ai tipi di dati datetime o smalldatetime, il componente dell'ora non specificato viene impostato su 00:00:00.000 e il componente della data non specificato è impostato su 01-01-1900
Quindi CAST
funzione considera il valore 1900-01-01
come valore iniziale durante il casting delle date. Quindi dobbiamo sottrarre 2 giorni quando lo utilizziamo per convertire i numeri di serie della data
Esistono 2 modi per convertirlo fino ad oggi utilizzando SQL Server:
select DATEADD(d,42824,'1899-12-30')
select CAST(36464 - 2 as SmallDateTime)
Conversione implicita SSIS
Anche secondo questo articolo di Microsoft Docs
DBTYPE_DATE (Questo è un tipo DATE di automazione. È rappresentato internamente come double.. La parte intera è il numero di giorni trascorsi dal 30 dicembre 1899 e la parte frazionaria è la frazione di giorno. Questo tipo ha una precisione di 1 secondo , quindi ha una scala effettiva di 0.)
Quindi la conversione implicita in SSIS considera il valore 1899-12-30
come valore iniziale durante il casting delle date. Quindi non è necessario sottrarre 2 giorni quando lo si utilizza per convertire i numeri di serie della data