1

の順にスタンプする文字フィールドがありますMMDDYYHHMMSS(注:日付ではなく文字フィールド)。これを SQL の日付フィールドにこの形式で送りたいと思っていますdd.mm.yyyy. hh24:mi

私の問題は、SQLが時間なしでYYYY-MM-DDフィールドに追い出すことです。SQL のこのセクションは次のようになります。

TO_DATE(SUBSTR(MOPACTIVITY.MOPID,3,2)||'.'||SUBSTR(MOPACTIVITY.MOPID,1,2)
        ||'.'||'20'||SUBSTR(MOPACTIVITY.MOPID,5,2)||'.'||SUBSTR(MOPACTIVITY.MOPID,7,2)
        ||':'||SUBSTR(MOPACTIVITY.MOPID,9,2)||':'||SUBSTR(MOPACTIVITY.MOPID,11,2)
       , 'dd.mm.yyyy. hh24:mi:ss') "XXX",

変換する時間を得る方法について何か考えはありますか?

4

1 に答える 1

1

このような複雑な式は必要ありません。

to_date(MOPID, 'MMDDYYHH24MISS')

DATE時間部分が 24 時間形式 (00-12 ではなく 00-23) であると仮定して、列を実際の列に変換します。また、varchar 列に実際に有効な日付がない場合、これも失敗します。

これを私のSQLの日付フィールドにこの形式に変換します

DATE列には「形式」がありません!

フォーマットは、表示するときにのみ適用されます。

列に格納されている varchar を、日付形式が異なる別の varchar に変換する場合、おそらく最も簡単なのは、上記の式を単純に varchar に変換することです。

to_char(to_date(MOPID, 'MMDDYYHH24MISS'), 'dd.mm.yyyy. hh24:mi')

そのようなものを適用する前に、1 つコメントさせてください。

日付をDATE列に格納し、決して列に格納しないでくださいVARCHAR

最初からそれを行っていた場合、必要な表示形式を取得するために列にシングルto_char()を適用するだけで知っておく必要があります。DATE

于 2013-06-03T20:38:57.003 に答える