sql >> Database >  >> RDS >> Oracle

CAST vs ssis datastroom impliciet conversieverschil

Over datumseries

De waarde die is opgeslagen in Oracle (42824 ) staat bekend als datumserie, het wordt ook gebruikt in Microsoft Excel .

Datumserie vertegenwoordigt het aantal dagen tussen de datumwaarde en de beginwaarde die 1899-12-30 is

U kunt meer lezen over datumseries op:

  • Waarom is 1899-12-30 de nuldatum in Access / SQL Server in plaats van 31-12?
  • Converteer Excel Date Serienummer naar Normale Datum

CAST-methode

Van Microsoft Docs - CAST en CONVERT (Transact-SQL):

Alleen ondersteund bij het casten van karaktergegevens naar datetime of smalldatetime. Wanneer tekengegevens die alleen datum- of alleen tijdcomponenten vertegenwoordigen worden gecast naar de datatypes datetime of smalldatetime, wordt de niet-gespecificeerde tijdcomponent ingesteld op 00:00:00.000 en de niet-gespecificeerde datumcomponent wordt ingesteld op 1900-01-01

Dus CAST functie houd rekening met de waarde 1900-01-01 als een initiële waarde bij het gieten van datums. Dus we moeten 2 dagen aftrekken wanneer we het gebruiken om datumseries te converteren

Er zijn 2 manieren om het tot op heden te converteren met SQL Server:

select DATEADD(d,42824,'1899-12-30')

select CAST(36464 - 2 as SmallDateTime)

SSIS Impliciete conversie

Ook volgens dit Microsoft docs-artikel

DBTYPE_DATE (Dit is een automatiseringstype DATE. Het wordt intern weergegeven als een dubbel.. Het hele deel is het aantal dagen sinds 30 december 1899 en het breukdeel is de fractie van een dag. Dit type heeft een nauwkeurigheid van 1 seconde , heeft dus een effectieve schaal van 0.)

Dus impliciete conversie in SSIS houdt rekening met de waarde 1899-12-30 als een initiële waarde bij het gieten van datums. Het is dus niet nodig om 2 dagen af ​​te trekken wanneer u het gebruikt om datumseries te converteren




  1. Ontsnappen aan een enkel aanhalingsteken in PHP bij het invoegen in MySQL

  2. Kan op afstand verbinding worden gemaakt met SQL Server Express LocalDB?

  3. Hoe kan ik de lijst met tabellen in de opgeslagen procedure krijgen?

  4. Hoe UUID() werkt in MariaDB