2017-12-13 22 views
0

日付を取得するためにクエリを実行したとき、この形式で取得されますがmm/dd/yyyyに変換する必要があります。私は、変換のために、このクエリを使用していyyyy/mm/dd hh:mm:ss.SSSをmm/dd/yyyyからoracleに切り捨てる方法

select 
    to_char(
     add_months (
      to_date(
       to_char(
        trunc(
         TO_DATE('2016/01/01 00:00:00.0', 'YYYY/MM/DD HH24:MI:SS.SSS') 
        ), 'MM/DD/YYYY' -- to char 
      ),'MM/DD/YYYY' -- to date 
     ), -2*1 -- add months 
    ), 'MM/DD/YYYY' -- to char 
) START_DATE, 

to_char(
    add_months (
     to_date(
      to_char(
       trunc(
        TO_DATE('2017/01/01 00:00:00.0', 'YYYY/MM/DD HH24:MI:SS.SSS') 
       ), 'MM/DD/YYYY' -- to char 
      ), 'MM/DD/YYYY' -- to date 
     ), 3 -- add months 
    ), 'MM/DD/YYYY' -- to char 
) END_DATE 

from dual; 

出力は

ORA-01810: format code appears twice 
01810. 00000 - "format code appears twice" 
+0

理由:TO_CHAR(ADD_MONTHS(TO_DATE(TO_CHAR(TRUNC(TO_DATE( "string" は)))))) - ()TRUNC(ADD_MONTHS(TO_DATE( "文字列"))) 'TO_CHARを使用し' –

+0

ここでの問題は、SSを複数回使用していることです。 YYYY/MM/DD HH24の代わりにMI:SS.SSSあなたはYYYY/MM/DD HH24:MI:SS –

答えて

1

ORA-01810は、次のとおりです。書式コードは二度あるためSS.SSSのだ

を表示されます。 SSSは有効な日付形式ではありません。あなたは小数秒を処理しようとしているが、されています。そのため

  1. 正しい形式のマスクはFF
  2. DATEは、小数点以下の秒をサポートしていない、唯一のTIMESTAMP

は本当に日付形式は、表示上の問題ですし、クライアントのNLS設定によって処理される必要があります。あなたが本当にSQLでそれを行う必要がある場合しかし、これはあなたが必要とするすべてである:

select 
    to_char(DATE '2015-11-01', 'MM/DD/YYYY') START_DATE 
    , to_char(DATE '2017-04-01', 'MM/DD/YYYY') END_DATE 
from dual; 

日付リテラルはすでに深夜に設定されているので、あなたがtrunc()は必要ありません。 add_months()は、日付リテラルの値を変更するだけで済みます。あなたは文字列に日付をキャストする必要はありません。

1

問題はto_date自体の変換にあります。変換自体以下のあなたがこれは単にではなく、あなたの必要性を満たす

select TO_TIMESTAMP('2017/01/01 00:00:00.0', 'YYYY/MM/DD HH24:MI:SS.FF') from dual 

にタイムスタンプするためにタイムスタンプを持つ文字列を変換したい場合は、以下のようにそれを使用する必要があるあなたが

select 
TO_DATE('2017/01/01 00:00:00.0', 'YYYY/MM/DD HH24:MI:SS.SSS') END_DATE 
from dual; 

を説明したエラーを投げています非常に多くの変換を行います。

select to_char(
    add_months(
    TO_TIMESTAMP('2017/01/01 00:00:00.0', 'YYYY/MM/DDHH24:MI:SS.FF'), 
    -2), 
'mm/dd/yyyy') from dual 
+0

ありがとうございます。出来た。 –

関連する問題