ORACLE不会节省时间.为什么?

Mer*_*yth 2 oracle time date insert

我正在尝试使用此查询在oracle中插入日期和时间:

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

但是如果我检查条目的日期是

SUNDAY 03 MAY 2003 00:00:00 CEST
Run Code Online (Sandbox Code Playgroud)

日期是正确的,但时间是错误的.为什么?

这附加在我的所有Oracle表中.

Blu*_*nga 5

我想没问题。

通过格式化结果检查

SELECT to_char(date_field,'yyyy/mm/dd hh24:mi:ss') date_field FROM table_name; 
Run Code Online (Sandbox Code Playgroud)


APC*_*APC 5

如果我们插入带有时间元素的日期,Oracle将保留时间元素.默认的Oracle日期格式是DD-MON-YYYY(或-YY),它不显示时间,但时间就在那里.

但是,您使用的客户端在其显示格式中包含时间元素,但它显示为午夜.请放心,这不是正常的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> 
Run Code Online (Sandbox Code Playgroud)

您可能的解释:

  1. 你错了,你不是真的包括时间部分.
  2. 您在客户端中选择了错误的行,而没有看到您插入的行.
  3. 你的表有一个执行前/后插入触发器:new.date_field := trunc(:new.date_field);.虽然我同意你所有的桌子都有这个你不知道的触发器似乎很神秘.
  4. Red Lectroids正在窃取时间元素,并将其走私到第7维度.