SQL*Loaderの制御ファイル内で、
以下のような日付データを変換するにはどうしたらよいでしょうか?

・2010-12-06 00:00:00.000

以前は'2010-12-06 00:00:00'の形式だったので
"to_char(to_date(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS'),'YYYYMMDD')"
のようにして変換が可能だったのですが、仕様変更がありましてこれに対応しなければいけなくなりました。

ちなみに安易な考えで以下のようにしたのですがさすがにだめでした...
"to_char(to_date(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS.000'),'YYYYMMDD')"

方法をご存知の方がいれば是非、ご教示いただきたく存じます。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

DATE型ではミリ秒を保持しないので、TO_DATE関数では変換できません。



ですので、TO_TIMESTAMP関数を使えばいいです。
>to_char(to_date(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS.000'),'YYYYMMDD')
to_char(to_timestamp(:DENPYO_DATE,'YYYY-MM-DD HH24:MI:SS.FF3'),'YYYYMMDD')

もしくはSUBSTR関数を使って".000"を除外してもいいと思います。
to_char(to_date(substr(:DENPYO_DATE,1,19),'YYYY-MM-DD HH24:MI:SS'),'YYYYMMDD')
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
おかげで無事要件を満たすことが出来ました。
ありがとうございました。

お礼日時:2011/04/22 17:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELでミリ秒を計算する方法

ミリ秒単位まで入力された時刻表記のセルがあります。
このセルの値をミリ秒に換算する方法を教えてください。

【セル書式】hh:mm:ss.000 ※hhは00固定
【例】
値は、「00:01:02.123」
これを、1*60000+2*1000+123=62123(ミリ秒)
というように算出したいのです。
計算式は、「mm*60000+ss*10000+000(ミリ秒部分)」です。

VBAはやったことがないので、出来れば、関数等で出来る
方法をお願いします。

Aベストアンサー

A1が時間のセルとして
=A1*24*60*60*1000

QSQL*Loaderでexcel内のデータロード

Oracle初心者です。
掲題の通りなのですが、
excelのファイル内に記述されている表の
データをSQL*Loaderでロードするには
どうすればいいのでしょうか?

まずexcelの表をcsvファイルにすればよいと思うのですが、csvファイルへの仕方がわかりません…

初歩的な質問ですが、よろしくお願いします。

Aベストアンサー

こんにちは。

>>csvファイルへの仕方がわかりません…
excelを保存する時に、CSV形式を選択すればいいですよ。
(^^ゞ

QExcelでミリ秒計算する方法

1周が4セクターに分かれたタイムをエクセルで合計し、それぞれ1周分のラップタイムを出そうとしています。(1周: 約2分14秒前後です)
例えば、3周分のセクタータイムをセルA〜Dに記入した場合なのですが…。

……A ………… B ………… C ………… D
1: 33.632 … 36.677 … 34:658 … 28.488
2: 33.152 … 35.314 … 34.715 … 28.403
3: 33.535 … 35.405 … 35.210 … 29.039

初めにセルの表示形式をユーザー定義で mm:ss.000 に変更すると、おかしな数字になってしまい計算できません。
また、各セルの表示形式を "00:"#.000 にすると、表示自体は 00:33.632 のように表示されるのですが、あくまで表示のみのようで時間計算に使えません。

各セルの頭に手動で 00: と一つづつ入力したあとに、表示形式を mm:ss.000 に変更すると時間として認識され、これを合計すれば1周分のタイムが出せるのは分かるのですが…。
ラップ数が増えると一つ一つ手入力で修正を加えるのはとても大変で困っています。

ラップ数が増えても、1周分のラップタイムをExcel関数などで簡略化し算出する方法をを教えて下さい。
Excel VBA は初心者のため、必要な場合は細かく教えて頂けると助かります。

1周が4セクターに分かれたタイムをエクセルで合計し、それぞれ1周分のラップタイムを出そうとしています。(1周: 約2分14秒前後です)
例えば、3周分のセクタータイムをセルA〜Dに記入した場合なのですが…。

……A ………… B ………… C ………… D
1: 33.632 … 36.677 … 34:658 … 28.488
2: 33.152 … 35.314 … 34.715 … 28.403
3: 33.535 … 35.405 … 35.210 … 29.039

初めにセルの表示形式をユーザー定義で mm:ss.000 に変更すると、おかしな数字になってしまい計算できません。
また、各セルの表示形式を "00:"#....続きを読む

Aベストアンサー

文章での説明は分かり難いので図を参考に見てください。
作業列(下図の例では、E~H列)を設定して計算すれば時間計算にも使えます。
参考にI列で時間計算しています。
作業列が邪魔なら、非表示にしてください。

QSQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書

SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。

イメージ
sqlplus scott/tiger << EOF
  declare
    aaa number;
  begin
    -- *1
    select col1 into aaa from test1;
  end;
  /

  -- *2
  define a=1
  define b=1
  @test.sql
EOF


ここで*1にて例えば複数行が返ってくるなどのエラーが
発生した場合、*2以降のSQLを実行せずにSQL*Plusから抜けたいのですが
どのようにすればよいかわかりますでしょうか。

whenever sqlerror exit 255

などはPL/SQL内の論理エラーはハンドリングしてくれないようです。

よろしくお願いします。

それかdefineや@マーク指定によるsqlファイルの取り込みを
PL/SQLの中で実行できる方法を教えていただく方法でも
当方が実施したいことはできるのでそれでもかまいません。

Aベストアンサー

SQLPLUSで投入したPL/SQL無名ブロック内でのエラーでも、「whenever sqlerror ~」で、
キャッチできますよ。少なくともWindows版SQLPUSは、そういう動作です。
発生源が、SQL文であっても、PL/SQL無名ブロックでも、ORA-nnnnnのエラーを拾わないと
「whenever sqlerror ~」の意味が無いですからね。

Q「ミリ秒」これの時間の単位が解りません。

スライドショー等のソフトによく使われている
「ミリ秒」これの時間の単位が解りません。
例えば3000ミリ秒、5000ミリ秒とは、
いったい何秒の事なんですか。
出来れば計算方法教えて頂けますか。

Aベストアンサー

3000ミリでしたら小数点を左に3つ動かすと、ミリが消えて「秒」になります。
マイクロは左に6つ、
ナノは左に9つ、
キロは右に3つ、
メガは右に6つ、
ギガは右に9つということになります。

QSQL*Loader Append

SQL*Loaderのコントロールファイル内のパラメータ設定についてですが、
ネットで調べた結果
ロード方法をAPPENDとすると既存データがある場合は新しい行として追加とあるのですが、
これはテーブルのPKが重複していても新しく行がついかされるということでしょうか?

逆にREPLACEはPKが重複しているデータに上書きされるということでしょうか?

よろしくお願いいたします。

Aベストアンサー

■APPENDで主キー重複が起きるか?
ダイレクトパスロードか否かで、結果が変わります。

LoaderのオプションがDIRECT = TRUE、かつダイレクトモード可能な条件を満たしている場合、ダイレクトパスロードとになります(素晴らしく速い)が、APPENDモードで主キー重複のレコードができてしまいます。

主キーが重複した場合、主キー制約/インデックスが無効状態になっており、INSERT/DELETE/主キーのUPDATEがエラーになってしまいますので、ご注意ください。
その場合は、TRUNCATE TABLEでいったんデータを消してしまえば、復活できます。

ダイレクトパスロードでない場合のAPPENDモードでは、主キー重複はエラーではじかれます。

■REPLACEの動き
PKが重複するものの入れ替えではなく、まるっと削除してからの追加になります。
TRUNCATEとの違いは、途中でエラーが発生したときにレコードが削除する前の状態に戻る点です。
レコードが消えて良いならTRUNCATEモードのほうが速いですね

Q1秒は何ミリ秒とか、単位変換の問題が苦手です。

今ITパスポートなどの情報処理技術者試験などの勉強をしているのですが、
1秒は何ミリ秒とか、3,600,000ミリ秒は何時間とかの単位変換の問題が苦手です。

また、4,096バイトは何kバイトとかの単位変換の問題とかも苦手です。
どのようにしたら、早く正確に解くことできるようになるでしょうか?

答え間違っていたり、答えが正解してても時間がかかってしまったりします。

計算方法や早く正確に解く方法など、教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

基本的には慣れの問題だと思いますが・・・。

あとは下記のことを覚えるぐらいでしょうか。

■ 一般的に使われる1000の倍数の単位を覚える
1K = 1000
1M = 1K × 1000
1G = 1M × 1000
1T = 1G × 1000
1m = 1 ÷ 1000
1μ = 1m ÷ 1000
1n = 1μ ÷ 1000
http://ja.wikipedia.org/wiki/SI%E6%8E%A5%E9%A0%AD%E8%BE%9E


■ 2は10乗すると約1000(1024 = 1K)になる


■ 2の10乗までの数は暗記する
 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

 計算が楽になります。
 例えば、2の5乗だったら、「2,4,8,16,32」と(心の中で)数えながら、指を折っていけば32が求まります。片手の指を全部折って開けば1024になるはずですから、そうならなければどこかで間違えた事になります。

QSQL*Loader 最終行が数値の場合

SQL*LoaderでCSVデータをロードする時に以下のようなデータの場合

"2010年","A/W","01","TOP","02","KNIT","007","長袖","00","無地","01:TOP","無地",,1,689,0,0,0,0,"P","WALK IN",689

Number型(10,2)の列に最後の数値(689)が入りません。
おそらく、終端記号がないのでデータを認識できないと思うのですが、
どうにかしてロードする方法はありますか?

Aベストアンサー

それは1行だけですか?複数の行でその状態になりますか?
CSVの項目の数だけSQL*Loaderの項目定義がありますか?
可能ならSQL*Loaderの定義を見せてください。

Qミリ秒→緯度、経度変換

すいません、当方、理解に人一倍かかりますので、それを承知の上で詳細に教えていただける方
お願いいたします。
※小学生でもわかるレベルで(汗

ミリ秒を緯度、経度変換を行う方法を詳細に教えていただきたいです。
1.128355152[ミリ秒]→変換後の緯度「○○゜△△'□□''」
2.128355152[ミリ秒]→変換後の経度「○○゜△△'□□''」

大変お手数ですが、よろしくお願いいたします。

Aベストアンサー

角度1度を変換すると、

1度=60分=3600秒=360万ミリ秒

となります。

128355152ミリ秒=128355.152秒で、ミリ秒部分の0.152は一旦省きます。

128355秒を3600で割ると、その整数部分が度になります。(35あまり2355)

そのあまりを60で割ると、その整数部分が分(37あまり30)になります。

そのあまりが秒になります。(30)

ここで再び0.152ミリ秒を足します。

これで答えが出ます。

角度の面では、128355152ミリ秒は35度37分30秒152(ミリ秒)となります。

余談になりますが、距離に関しては、その計測地点を通る緯線、経線の長さや、緯度、経度に左右される補正作業が必要になるので(例えば経度は、赤道付近と極点近くで1度分の距離が違う(赤道付近の方が長い))、これだけでは算出できません。

QSQL*Loaderでのデータロード

SQL*Loaderでデータロードを実行するとき
ロードするテキストファイルのある列の部分が
スペースのとき、テーブルで設定したデフォルト値
をロードさせたいのですが、どうCTLファイルで記述
すればよいのですか?
教えてください。おねがいします。

Aベストアンサー

こんにちは。

表(C)は、
**********************************
名前 型
------------
COL1 CHAR(1)
COL2 CHAR(1)
**********************************
こんなもんでしょうか。

データファイルは、
**********************************
a1
2
c3
**********************************
こんなもんでしょうか。

CTLファイルは、
**********************************
INTO TABLE C
(
COL1 POSITION(001:001) CHAR "DECODE(:COL1,'','0',:COL1)"
,
COL2 POSITION(002:002) CHAR
)
**********************************
こんなもんでしょうか。

これで行うと、表Cは、
**********************************
a 1
0 2
c 3
**********************************
になります。参考になるでしょうか?

こんにちは。

表(C)は、
**********************************
名前 型
------------
COL1 CHAR(1)
COL2 CHAR(1)
**********************************
こんなもんでしょうか。

データファイルは、
**********************************
a1
2
c3
**********************************
こんなもんでしょうか。

CTLファイルは、
**********************************
INTO TABLE C
(
COL1 POSITION(001:001) CHAR "DECODE(:COL1,'','0',:COL1)"
,
COL2 POSITION(002:002) CHAR
)
*****...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング