2016-11-25 26 views
0

Current_timestampをOracleテーブルに挿入したいとします。私は'select current_timestamp,systimestamp from dual;をしたときに、私はまた日付とタイムスタンプを挿入するとエラーが発生する

ORA-01830: date format picture ends before converting entire input string 
01830. 00000 - "date format picture ends before converting entire input string" 
*Cause:  
*Action: 

としてto_timestamp(current_timestamp,'YYYY-MM-DD HH24:MI:SS:FF')が、その与え、エラーのようなものを試してみましたおかげであなたの答えのための多くは、「それは私に

'CURRENT_TIMESTAMP      
-------------------------------------- 
25-NOV-16 12.03.04.605812000 PM ASIA/C 
ALCUTTA ' whereas when i did -'select systimestamp from dual;' I got 'SYSTIMESTAMP       
-------------------------------------- 
25-NOV-16 06.33.04.789680000 AM +00:00 

を与えました」。

ここでは、25-NOV-16 06.33.04.789680000という形式で他の多くのフィールドと一緒に挿入したいと考えています。 助けてください。

+2

どのようなデータ型ですか?それが 'TIMESTAMP'ならば(それはそうでなければなりません)、あなたが使用しなければならないのは' CURRENT_TIMESTAMP'だけです。また注意: 'CURRENT_TIMESTAMP'は*クライアント*のタイムスタンプです。要件に応じて、 'SYSTIMESTAMP'を代わりに使用することもできます。これは* server *のタイムスタンプです。 –

+1

'current_timestamp FROM dual'を実行して' current_timestamp'のフォーマットをチェックしてください...あなたのフォーマットマスクが正しいかどうか疑問です。 –

+4

***決して***、_ever_はすでにタイムスタンプの値に 'to_timestamp()'を呼び出していません。最初にvarcharに変換してから、* back *をタイムスタンプに変換するだけです。 'timestamp'(と' date')カラムは** "**フォーマット"を持っていません。値を挿入し、値を表示するときにその書式を適用します。 "*私はフォーマットに挿入したい*"は間違った前提です。 –

答えて

0

あなたの列がTIMESTAMP、単に使用している場合@Edギブスが言ったように:

insert into yourtable select current_timestamp from dual; 

またはあなたの列はVARCHARあり、その後、形式を変更したい:

insert into yourtable select to_char(current_timestamp, 'YYYY-MM-DD HH12:MI:SS:FF') from dual; 
+0

こんにちは、私は 'current_timestamp、デュアルからsystimestampを選択しましたあなたの答えのためにありがとうございました;その後私に 'CURRENT_TIMESTAMP'を与えた -------------------------------------- 25-NOV- 16 12.03.04.605812000 PM ASIA/C ALCUTTA '私がしたときに、デュアルからsystimestampを選択しました;私は 'SYSTIMESTAMP'を持っています -------------------------------------- 25-NOV-16 06.33 .04.789680000 AM +00:00 '。 –

+1

@JSapkota、おそらく "あなたのマシン"があいまいで、 "あなたの現在のセッション"をうまく使います。これはマシンのタイムゾーンとは異なる場合があります(デフォルトでは同じですが) –

1

CURRENT_TIMESTAMPは、現在の日付を返します。セッション・タイム・ゾーンの時間は、データ型がTIMESTAMP WITH TIME ZONEの値になります。

TIMESTAMPの値が必要な場合は、CAST(CURRENT_TIMESTAMP AS TIMESTAMP)とするか、はるかに簡単に行うことができます。LOCALTIMESTAMPを使用してください。

あなたの更新された質問によると、タイムゾーンまたはデータベースサーバUTCで時間を挿入するのがいいでしょう。「アジア/カルカッタ」ではありません。

この場合、CAST(SYSTIMESTAMP AS TIMESTAMP)または単にSYSTIMESTAMPを使用すると、Oracleは内部的にキャストします。

関連する問題