-2

Oracle SQLDeveloper3.0.03を使用しています。ExcelファイルをOracleデータテーブルにアップロードしようとしています。日付にエラーがあります。データベースの列はタイムスタンプであり、「データロードウィザード」の日付形式に何を入力すればよいかわかりません。次の形式(dd-mom-yy hh.mi.ss)を使用すると、SQLDeveloperは次のエラーを表示します。

--Insert failed for row  1 TIMESTAMP_COLUMN GDK-05047: A day of the month must be between 1 and the last day of the month.
--Row 1
INSERT INTO TABLE_1 (Column1, Column2, Column3, TIMESTAMP_COLUMN) VALUES ('Some Text','Some Text','Some more text',to_timestamp('40604.0', 'dd-mon-yy hh.mi.ss'));

EXCELのデフォルトの数値形式は40604.0です。セルを短い日付形式に変更すると、2011年3月2日が表示されます。

EXCELにある日付形式を受け入れ、それをTIMESTAMPとしてOracleにアップロードする「DATALoadWizard」の「FORMAT」セクションにどの「形式」を入れる必要があるかを理解しようとしています。

ここに画像の説明を入力してください

4

3 に答える 3

1

私は今日同じことに遭遇し、この2つの方法を「修正」しました。2番目の方法はおそらく複雑すぎるように思われますが、日付のフォーマットをOracleの標準のdd-mmm-yyのように自動化するのに苦労している場合は役立つかもしれません。

  1. Excelの日付列をdd-mmm-yyとしてフォーマットし、テーブルに直接インポートします。
    • 列を強調表示します
    • 既存の形式がある[その他の数値形式]を選択します(Excel 2010では、[ホーム]タブのドロップボックスに[一般]と表示されます
    • カテゴリボックスの最後のエントリ「カスタム」を選択します
    • [タイプ:]ボックスに手動でdd-mmm-yyと入力します

  2. Excelで日付列をmm/dd / yyとしてフォーマットし、テーブルをテキストとしてインポートし、を使用して一時テキストテーブルから手動挿入ステートメントを記述します。TO_DATE(date_field,'MM/DD/YYYY')
    • 列を強調表示します
    • 既存の形式がある[その他の数値形式]を選択します(Excel 2010では、[ホーム]タブのドロップボックスに[一般]と表示されます
    • カテゴリボックスで「日付」エントリを選択します
    • リストから「03/14/01」を選択します
于 2012-06-24T01:12:16.143 に答える
0

ええ、それが問題です。

その月の日は、1からその月の最後の日まででなければなりません。

1)これらの小数はどのように作成されますか?

2)これは「2004年4月6日」ですか?またはこれらの秒は1970年からですか?

この数値形式についてさらに詳細を追加する必要があります。

于 2012-05-02T13:47:49.033 に答える
0

Excelの「ゼロ」日付は1900年1月0日(はい、ゼロ)です。Oracleは月の「ゼロ」日を処理できないため、Excelの値から1を引く必要があります。したがって、以下はあなたが望むものにあなたを近づけるはずです:

SELECT CAST(TO_DATE('01-JAN-1900 00:00:00', 'DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP) +
           NUMTODSINTERVAL(41017.6361109954 - 1, 'DAY')
  FROM DUAL

「インポート方法」に関する限り、これを行うために私が認識しているOracleの日付形式はありません。最も簡単な方法は、値をNUMBER列にインポートしてから、スクリプトを実行して日付変換を行うことです。

共有してお楽しみください。

于 2012-05-02T17:12:24.493 に答える