好吧,我在这里难过。我正在尝试从下表中获取唯一的唯一日期列表:
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个版本,我该怎么做才能让它只给我一个独特的日期呢?
答案 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