Acerca de las publicaciones seriadas
El valor almacenado en Oracle (42824
) se conoce como serial de fecha, también se usa en Microsoft Excel
.
La serie de fecha representa el número de días entre el valor de la fecha y el valor inicial que es 1899-12-30
Puede obtener más información sobre las publicaciones seriadas en:
- ¿Por qué 1899-12-30 es la fecha cero en Access/SQL Server en lugar del 31/12?
- convertir número de serie de fecha de Excel a fecha normal
Método CAST
De Microsoft Docs - CAST y CONVERT (Transact-SQL):
Solo se admite cuando se envían datos de caracteres a datetime o smalldatetime. Cuando los datos de caracteres que representan solo la fecha o solo los componentes de hora se convierten en los tipos de datos datetime o smalldatetime, el componente de hora no especificado se establece en 00:00:00.000 y el componente de fecha no especificado se establece en 1900-01-01
Así que CAST
la función considera el valor 1900-01-01
como valor inicial al momento de lanzar las fechas. Entonces, debemos restar 2 días cuando lo usamos para convertir seriales de fecha
Hay 2 formas de convertirlo a la fecha usando SQL Server:
select DATEADD(d,42824,'1899-12-30')
select CAST(36464 - 2 as SmallDateTime)
Conversión implícita de SSIS
También de acuerdo con este artículo de documentos de Microsoft
DBTYPE_DATE (Este es un tipo de FECHA de automatización. Se representa internamente como un doble. La parte entera es el número de días desde el 30 de diciembre de 1899 y la parte fraccionaria es la fracción de un día. Este tipo tiene una precisión de 1 segundo , por lo que tiene una escala efectiva de 0.)
Entonces, la conversión implícita en SSIS considera el valor 1899-12-30
como valor inicial al momento de lanzar las fechas. Por lo tanto, no hay necesidad de restar 2 días cuando se usa para convertir seriales de fecha