日付シリアルについて
Oracleに格納されている値(42824
)は日付シリアルと呼ばれ、Microsoft Excel
でも使用されます。 。
日付シリアルは、日付値と初期値1899-12-30
の間の日数を表します
日付シリアルの詳細については、次のURLをご覧ください。
- 1899-12-30が12/31ではなくAccess/SQL Serverのゼロ日付であるのはなぜですか?
- Excelの日付のシリアル番号を通常の日付に変換する
CASTメソッド
Microsoft Docsから-CASTおよびCONVERT(Transact-SQL):
文字データからdatetimeまたはsmalldatetimeにキャストする場合にのみサポートされます。日付のみまたは時刻コンポーネントのみを表す文字データが日時またはsmalldatetimeデータ型にキャストされる場合、不特定の時刻コンポーネントは00:00:00.000に設定され、不特定の日付コンポーネントは1900-01-01に設定されます
>
つまり、CAST
関数は値1900-01-01
を考慮します 日付をキャストするときの初期値として。したがって、日付シリアルの変換に使用する場合は2日を引く必要があります
SQLServerを使用して日付に変換する方法は2つあります。
select DATEADD(d,42824,'1899-12-30')
select CAST(36464 - 2 as SmallDateTime)
SSIS暗黙的変換
また、このMicrosoftドキュメントの記事によると
DBTYPE_DATE(これは自動化DATE型です。内部的にdoubleとして表されます。全体は1899年12月30日からの日数であり、小数部分は1日の端数です。この型の精度は1秒です。 、有効スケールは0です。)
したがって、SSISでの暗黙的な変換では、値1899-12-30
が考慮されます。 日付をキャストするときの初期値として。したがって、日付シリアルを変換するために使用する場合、2日を引く必要はありません