3

次のクエリを使用して、Oracle に日付と時刻を挿入しようとしています。

insert into table_name
(date_field)
values
(to_date('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss'))

しかし、エントリを確認すると、日付は

SUNDAY 03 MAY 2003 00:00:00 CEST

日付は正しいのですが、時間が間違っています。なんで?

これは、Oracle のすべてのテーブルに追加されます。

4

3 に答える 3

5

大丈夫だと思います。

整形結果で確認

SELECT to_char(date_field,'yyyy/mm/dd hh24:mi:ss') date_field FROM table_name; 
于 2013-06-14T15:01:17.547 に答える
5

時間要素を含む日付を挿入すると、Oracle は時間要素を保持します。デフォルトの Oracle 日付形式は DD-MON-YYYY (または -YY) で、時刻は表示されませんが、時刻は表示されます。

ただし、表示形式に時刻要素が含まれているクライアントを使用していますが、午前 0 時と表示されています。これは通常の Oracle の動作ではありません。これは通常の Oracle の動作です。

SQL> insert into table_name
(date_field)
values
(to_date('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss'))  2    3    4  
  5  /

1 row created.

SQL> alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'
  2  /

Session altered.

SQL> select * from table_name
  2  /

DATE_FIELD
--------------------
03-MAY-2003 21:02:44

SQL> 

状況の考えられる説明:

  1. あなたは間違っており、時間の部分を実際に含めていません。
  2. クライアントで間違った行を選択しているため、挿入した行が表示されません。
  3. あなたの持っているテーブルには、実行する前後の挿入トリガーがあり:new.date_field := trunc(:new.date_field);ます。私は同意しますが、すべてのテーブルに、あなたが知らないこのトリガーがあるのは不思議に思えます。
  4. レッド・レクトロイドは時間の要素を盗み、それを密輸して7次元に戻しています。
于 2013-06-14T15:21:21.623 に答える