Oracle SQL获取唯一日期列表

时间:2014-03-22 15:33:34

标签: sql oracle

好吧,我在这里难过。我正在尝试从下表中获取唯一的唯一日期列表:

SALES(OUTLET_NUMBER, EMP_NUMBER, CUSTOMER_ID, PRODUCT_CODE, SALE_DATE, SALE_TIME, quantity)

但是当我尝试声明时:

SELECT SALE_DATE 
  FROM sales 
GROUP BY 
       SALE_DATE;

它不会删除已存在的日期。

SALE_DATE   
20-MAR-14  
19-MAR-14  
20-MAR-14  
20-MAR-14  
01-DEC-13  
19-MAR-14

这是oracle的输出。为什么它会显示20-MAR-14的3个版本,我该怎么做才能让它只给我一个独特的日期呢?

2 个答案:

答案 0 :(得分:1)

在Oracle中,date数据类型相当误导性地也包含时间。尽管您还可以使用trunc()将日期格式化为字符串,但最简单的方法是使用to_char()

试试这个:

SELECT trunc(SALE_DATE) as sale_date
FROM sales
GROUP BY trunc(SALE_DATE)
ORDER BY trunc(SALE_DATE);

答案 1 :(得分:1)

Oracle中的date类型也会存储时间。打印出您查询过的date时,它们会根据您的默认日期格式转换为字符串。由于它似乎是dd-mon-yy,你不会看到他们的时间部分,而且看起来你有重复。

对于instnace,您可以使用trunc函数删除时间部分:

SELECT DISTINCT TRUNC(sale_date) FROM sales