Über Datumsserien
Der in Oracle gespeicherte Wert (42824
) ist bekannt als date serial , es wird auch in Microsoft Excel
verwendet .
Date Serial stellt die Anzahl der Tage zwischen dem Datumswert und dem Anfangswert dar, der 1899-12-30
ist
Weitere Informationen zu Datumsserien finden Sie unter:
- Warum ist 1899-12-30 das Nulldatum in Access / SQL Server und nicht der 31.12?
- Excel-Datumsseriennummer in reguläres Datum umwandeln
CAST-Methode
Aus Microsoft Docs – CAST und CONVERT (Transact-SQL):
Wird nur beim Casting von Zeichendaten in datetime oder smalldatetime unterstützt. Wenn Zeichendaten, die nur Datums- oder nur Zeitkomponenten darstellen, in die Datentypen datetime oder smalldatetime umgewandelt werden, wird die nicht angegebene Zeitkomponente auf 00:00:00.000 und die nicht angegebene Datumskomponente auf 1900-01-01
Also CAST
Funktion berücksichtigt den Wert 1900-01-01
als Anfangswert beim Gießen von Daten. Wir müssen also 2 Tage abziehen, wenn wir es verwenden, um Datumsserien umzuwandeln
Es gibt zwei Möglichkeiten, es mit SQL Server in das Datum zu konvertieren:
select DATEADD(d,42824,'1899-12-30')
select CAST(36464 - 2 as SmallDateTime)
Implizite SSIS-Konvertierung
Auch gemäß diesem Artikel in der Microsoft-Dokumentation
DBTYPE_DATE (Dies ist ein automatisierter DATE-Typ. Er wird intern als Double dargestellt. Der ganze Teil ist die Anzahl der Tage seit dem 30. Dezember 1899 und der Bruchteil ist der Bruchteil eines Tages. Dieser Typ hat eine Genauigkeit von 1 Sekunde , hat also eine effektive Skala von 0.)
Daher berücksichtigt die implizite Konvertierung in SSIS den Wert 1899-12-30
als Anfangswert beim Gießen von Daten. Es ist also nicht erforderlich, 2 Tage abzuziehen, wenn Sie es zum Konvertieren von Datumsserien verwenden