sql >> Databáze >  >> RDS >> Oracle

Rozdíl implicitní konverze datového toku CAST vs ssis

O datových seriálech

Hodnota uložená v Oracle (42824 ) je známý jako date serial , používá se také v Microsoft Excel .

Date Serial představuje počet dní mezi hodnotou data a počáteční hodnotou, která je 1899-12-30

Další informace o datech si můžete přečíst na adrese:

  • Proč je 1899-12-30 nulovým datem v Access / SQL Server místo 12/31?
  • převést sériové číslo data aplikace Excel na běžné datum

Metoda CAST

Z Microsoft Docs – CAST a CONVERT (Transact-SQL):

Podporováno pouze při přetypování z dat znaků do datetime nebo smalldatetime. Když jsou znaková data, která představují pouze datum nebo pouze časové složky, přetypována na datové typy datetime nebo smalldatetime, nespecifikovaná časová složka je nastavena na 00:00:00.000 a nespecifikovaná složka data je nastavena na 1900-01-01

Takže CAST funkce zvážit hodnotu 1900-01-01 jako počáteční hodnotu při obsazení dat. Takže musíme odečíst 2 dny, když je použijeme k převodu datových pořadů

Existují 2 způsoby, jak jej převést na datum pomocí SQL Server:

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

select CAST(36464 - 2 as SmallDateTime)

Implicitní konverze SSIS

Také podle tohoto článku Microsoft docs

DBTYPE_DATE (Toto je automatizační typ DATE. Interně je reprezentován jako double.. Celá část je počet dní od 30. prosince 1899 a zlomková část je zlomek dne. Tento typ má přesnost 1 sekundy , takže má efektivní stupnici 0.)

Takže implicitní převod v SSIS zvažte hodnotu 1899-12-30 jako počáteční hodnotu při obsazení dat. Není tedy potřeba odečítat 2 dny, když jej použijete k převodu datových pořadů




  1. MySQL – Operand by měl obsahovat 1 sloupec(y)

  2. PostgreSQL:sériové vs identita

  3. Výukový program Oracle SQL:Základní příkaz SQL

  4. Rozdělit velký textový/CSV soubor na více souborů v PL SQL