2017-04-09 8 views
-1

文字に変換する必要がある日付列があります。しかし、実際のデータが日付値を持っていても'00 -000-00 'を検索します。また、私はそれを再び日付に変換すると、翌日の値を与えます。例えばOracle Databaseでは、TO_CHAR(Date)は結果'00 -000-00 'を返します。

Value: 25-MAR-17 (Date Datatype) 
TO_CHAR(Value, 'DD-MON-YY'): '00-000-00' 
TO_DATE(Value, 'DD-MON-YY'): '26-MAR-17' 

そして、それはすべての値だけで、最近の値のために起こっていません。ここで

は、その日付の列に存在するダンプ値である:

select OrderNumber, LoanDate, Dump(LoanDate) from OrderDetail 
where OrderNumber=283402 
OrderNumber| LoanDate | Dump(LoanDate) 
283402  | 26-MAR-17 | Typ=12 Len=7: 120,117,3,27,0,15,40 

これらの奇妙な事が起こって、どのようにこれを処理するために、なぜあなたは私を説明していただけますか?あなたはおよそ0を言っているそれは何のコメント

には大きすぎるだろうとして、代わりにコメントの答えとして置く

+3

私たちは、あなたの質問を理解するために、これはあなたが提示したデータで起こるべき方法はありませんので、それはかなり難しいです。再現可能なテストケースを用意してください。つまり、この動作を示すサンプルデータと実行中のクエリを持つダミーテーブルです。細部を本質的に切り詰める。この練習問題はあなたに洞察力を与え、私たちの助けなしにあなたの問題を解決することができます。 – APC

+0

日付から日付への変換は、動作の確認だけです。 –

+2

問題を再現するために必要なDDLとDML文を[MCVE]に入力してください。また、 'SELECT DUMP(your_date_column)FROM your_table'を試して、その値が何であるかをお知らせください。 – MT0

答えて

0

することはできません。時間だけを表示するようにNLS_DATE_FORMATを設定した場合は、ゼロが返される可能性があります。また、timezone変換のため、次の日付を取得する可能性があります。

トラブルシューティングを行うには、以下の手順に従います。質問を編集し、質問に出力します。

  1. SELECT * FROM nls_session_parameters;

  2. 実行select sysdate from dual;と出力を示します。

  3. これを実行alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
  4. 実行select sysdate from dualと出力を表示します。ここでもう一度、あなたの日付を選択し
  5. select <date column> from <your table> where rownum<2;
  6. 実行select to_char(date_column,'DD-MON-YYYY') from your_table where row_num<2;
+0

ありがとうございます。試してみる。 –

+1

しかし、私はそれがフォーマットの問題だとは思わない。 –

+0

'to_char()'を呼び出すとき 'nls_date_format'は関係ありません。 –

関連する問題