sql >> データベース >  >> RDS >> Oracle

CASTとssisのデータフローの暗黙的な変換の違い

    日付シリアルについて

    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日を引く必要はありません




    1. Spring + Hibernate:クエリプランのキャッシュメモリ使用量

    2. PostgreSQLへのリモート接続を設定する方法

    3. COALESCEとISNULLのどちらが速いですか?

    4. MySQLルートユーザーの完全な権限を復元するにはどうすればよいですか?