我在 Oracle 中有一个表,其中有DATE
列。我可以观察到SELECT DISTINCT
返回重复项:
select distinct myDate from myTable;
myDate
----------------------------
2009-09-05 00:00:00
2009-09-05 00:00:00
但:
select distinct to_char(myDate, 'DD-MM-YYYY HH24:MI:SS') from myTable;
TO_CHAR(myDate,'DD-MM-YYYYHH24:MI:SS')
------------------------------------------------
05-09-2009 00:00:00
还有下一个查询,可以说明更多信息:
select count(*) from myTable;
COUNT(*)
----------
12
select myDate, count(*) from myTable group by myDate;
myDate COUNT(*)
---------------------------- ----------
2009-09-05 00:00:00 6
2009-09-05 00:00:00 6
select count(*) from myTable where myDate='2009-09-05';
COUNT(*)
----------
6
这种行为的原因是什么?据我所知,DATE
列中没有更多信息可以产生影响(没有时区,没有毫秒)。
编辑:表 DDL
不幸的是,我不能发布整个 DDL。列的定义是:
myDate DATE NOT NULL
重要的是,使用此列对表进行分区:
PARTITION BY RANGE (myDate)
(
PARTITION P_19991231 VALUES LESS THAN
(TO_DATE('1999-12-31 00:00:00',
'YYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);
表中有更多分区。
并且也是ENABLE ROW MOVEMENT
ON。