我在Oracle中有一個表,它有DATE
列。我可以觀察到SELECT DISTINCT
返回重複:爲什麼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
已打開。
你可以給我們一個表的模式嗎? – Farlan
爲什麼不更改SQL * Plus的NLS格式,以便顯示日期***和***時間? –
@a_horse_with_no_name我改變了它並編輯了我的問題。但它沒有顯示(至少對我而言)。 – psur