2017-12-20 3 views
0

Oracleには、 'MM/DD/YYYY HH24:MI.SxFF6'という形式のタイムスタンプ列があります。 データは以下のようになります。Oracleのデフォルトのミリ秒は0です

11/09/1917 10:45:28.230000 
10/19/2014 18:09:28.410000 
12/19/2011 11:06:28.340000 

私は、クエリを試してみました000000 にデフォルト設定する必要がミリ秒を取得するため以外の値を保持するためのタイムスタンプ必要 -

cast(to_char(Local_time, 'MM/DD/YYYY HH24:MI:SS') as timestamp(6)) 

をしかし、それはありますスローエラー - "Not valid month"

ミリ秒を0にしようとする人はいませんか?私はToadを使ってテーブルを照会します。

+0

なぜ 'TIMESTAMP'を' VARCHAR2'にキャストしようとしますか? –

答えて

0

TIMESTAMP値には何も書式はありません。あなたが持っているのはデフォルトのの表示のフォーマットで、現在のユーザNLS_TIMESTAMP_FORMATの設定です。

は、この方法を試してください。

CAST(Local_time AS TIMESTAMP(0)) 

あなたはおそらく、ミリ秒が、避難所にそれらがまだ使用可能使用

CAST(CAST(Local_time AS TIMESTAMP(0)) AS TIMESTAMP(6)) 
+0

私は試しました。この列はタイムスタンプのデータ型であり、あなたのキャストを使用しています(timestamp(0)は、ミリ秒もAM/PMも持たないタイムスタンプを取得します)24 HR形式にします – Pallavi

+0

再び、 'TIMESTAMP'フォーマットはありません!デフォルトの表示のために 'NLS_TIMESTAMP_FORMAT'設定を変更するか、' TO_CHAR'機能を使用してください。 –

0

にこのような何かをTRUNCしたい場合は?

SQL> create table test (col timestamp, result timestamp); 

Table created. 

SQL> insert into test (col) values (to_timestamp('11/09/1917 15:45:28.230000', 'MM/DD/YYYY HH24:MI:SS.FF6')); 

1 row created. 

SQL> update test set result = cast(col as date); 

1 row updated. 

SQL> select * From test; 

COL      RESULT 
------------------------- ------------------------- 
09.11.17 15:45:28,230000 09.11.17 15:45:28,000000 

SQL>