Oracle日期列中的奇怪行为

Oracle日期列中的奇怪行为,oracle,date,date-conversion,Oracle,Date,Date Conversion,我在Oracle 9i中遇到了这种奇怪的行为: select t.final_day, to_char(t.final_day,'DD/MM/YYYY HH24:MI:SS') final_day1, t.week_first_day, to_char(t.week_first_day,'DD/MM/YYYY HH24:MI:SS') week_first_day1 from mytable t where t.rowid in ( 'AA

我在Oracle 9i中遇到了这种奇怪的行为:

select
    t.final_day,
    to_char(t.final_day,'DD/MM/YYYY HH24:MI:SS') final_day1,
    t.week_first_day,
    to_char(t.week_first_day,'DD/MM/YYYY HH24:MI:SS') week_first_day1
from  
    mytable t 
where 
    t.rowid in ( 'AAAJ6QAAZAAACenAAW','AAAJ6QAAZAAACenAAT')
order by 
    t.end_date
奇怪的是,插入的日期没有时间(默认为00:00/12:00 AM)会将OK转换为chart,但插入时间的日期无法转换为char:

FINAL_DAY               FINAL_DAY1          WEEK_FIRST_DAY          WEEK_FIRST_DAY1 
7/19/2015 12:00:00 AM   19/07/2015 00:00:00 7/13/2015 12:00:00 AM   13/07/2015 00:00:00
7/25/2015 11:00:00 PM   00/00/0000 00:00:00 7/19/2015 11:00:00 PM   00/00/0000 00:00:00
  • 这可能是什么原因?我该如何解决
更新:

这是我将dump函数应用于两个日期列时得到的结果:

DUMP1                               DUMP2
Typ=12 Len=7: 120,115,7,19,1,1,1    Typ=12 Len=7: 120,115,7,13,1,1,1
Typ=12 Len=7: 120,115,7,26,0,1,1    Typ=12 Len=7: 120,115,7,20,0,1,1
更新2:


两列的类型均为
DATE
。即使在执行
alter session set nls_date_format='DD/MM/yyyyy HH24:MI:SS'之后,行为仍然存在

它可能与NLS变量相关吗?严格来说,这不是真的,因为当您选择一个日期而不显式地将其转换为字符串时,Oracle会通过to_char隐式地将其转换为日期,使用默认的NLS_date_format参数作为格式掩码。然而,使用to_char()的结果是奇怪的;我不希望看到你看到的!如果在select语句中添加
转储(最后一天)、转储(第一周)
,您会得到什么?请更新您的问题以添加此信息?另外,最后一天和第一周列的数据类型是什么?您的nls_日期_格式的值是多少?如果您更改会话集nls_date_format='DD/MM/yyyyy HH24:MI:SS',它会改变什么吗
@Boneist我更新了这个问题。一点研究发现了这个:。我怀疑日期信息已损坏,因为当我比较日期列的dump()结果时,时间元素中没有任何0。例如:
25/03/2015 01:04:30
返回
Typ=12 Len=7:120115,3,25,2,5,31
,因此列表中的第一个数字似乎是1,后面是一年中的前两位数字,接下来是1,后面是一年中的最后两位数字,然后是月份,然后是天,然后是小时+1,然后是分钟+1,然后是秒+1。因此,您不应该在时间元素位中看到0,而您的时间元素位中应该看到0。它可能与NLS变量相关吗?严格来说,这不是真的,因为当您选择一个日期而不显式地将其转换为字符串时,Oracle会通过to_char隐式地将其转换为日期,使用默认的NLS_date_格式参数作为格式掩码。然而,使用to_char()的结果是奇怪的;我不希望看到你看到的!如果在select语句中添加
转储(最后一天)、转储(第一周)
,您会得到什么?请更新您的问题以添加此信息?另外,最后一天和第一周列的数据类型是什么?您的nls_日期_格式的值是多少?如果您更改会话集nls_date_format='DD/MM/yyyyy HH24:MI:SS',它会改变什么吗@Boneist我更新了这个问题。一点研究发现了这个:。我怀疑日期信息已损坏,因为当我比较日期列的dump()结果时,时间元素中没有任何0。例如:
25/03/2015 01:04:30
返回
Typ=12 Len=7:120115,3,25,2,5,31
,因此列表中的第一个数字似乎是1,后面是一年中的前两位数字,接下来是1,后面是一年中的最后两位数字,然后是月份,然后是天,然后是小时+1,然后是分钟+1,然后是秒+1。因此,您不应该在时间元素位中看到0,而您的时间元素位是这样的。