Oracle
 sql >> база данни >  >> RDS >> Oracle

Неявна разлика в преобразуването на потока от данни CAST спрямо ssis

Относно сериалите с дати

Стойността, съхранена в Oracle (42824 ) е известен като серийна дата, използва се и в Microsoft Excel .

Серийната дата представлява броя дни между стойността на датата и първоначалната стойност, която е 1899-12-30

Можете да прочетете повече за Date Serials на:

  • Защо 1899-12-30 е нулевата дата в Access/SQL Server вместо 12/31?
  • конвертирайте серийния номер на датата на Excel в редовна дата

Метод CAST

От Microsoft Docs – CAST и CONVERT (Transact-SQL):

Поддържа се само при прехвърляне от символни данни към datetime или smalldatetime. Когато символните данни, които представляват само компонентите за дата или само време, се прехвърлят към типовете данни datetime или smalldatetime, непосоченият компонент за време се задава на 00:00:00.000, а неуказаният компонент за дата е настроен на 1900-01-01

Така че CAST функция вземе предвид стойността 1900-01-01 като начална стойност при леене на дати. Така че трябва да извадим 2 дни, когато го използваме за преобразуване на серийни дати

Има 2 начина да го преобразувате към дата с помощта на SQL Server:

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

select CAST(36464 - 2 as SmallDateTime)

Неявно преобразуване в SSIS

Също така според тази статия в документите на Microsoft

DBTYPE_DATE (Това е автоматизиран тип DATE. Вътрешно е представен като двоен.. Цялата част е броят на дните от 30 декември 1899 г., а дробната част е част от деня. Този тип има точност от 1 секунда , така че има ефективна скала от 0.)

Така че имплицитното преобразуване в SSIS вземете предвид стойността 1899-12-30 като начална стойност при леене на дати. Така че няма нужда да изваждате 2 дни, когато го използвате за преобразуване на серийни дати




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Активиране на виртуализация в BIOS в лаптоп или настолен компютър за Virtualbox VM

  2. SQL - Намерете липсващи int стойности в предимно подредени последователни серии

  3. Lighty накратко

  4. Преобразуване на интервала в минути

  5. начини за избягване на глобални временни таблици в oracle