我的表格中有
这样的条目01-JAN-92 12.00.00.000000000 AM -04:00
01-JAN-86 12.00.00.000000000 AM -04:00
03-JAN-01 12.00.00.000000000 AM +00:00
03-JAN-01 12.00.00.000000000 AM -04:00
我希望能够计算特定日期的所有条目,而不是考虑时间(最后两个条目)。
到目前为止,这就是我所拥有的
SELECT ACTIONDATE, count(ACTIONDATE) AS count FROM mytable GROUP BY ACTIONDATE
如何制作它以便仅按日而不是整个条目进行分组?
答案 0 :(得分:2)
使用date()函数:
SELECT DATE(ACTIONDATE),
COUNT(ACTIONDATE) AS count
FROM mytable
GROUP BY DATE(ACTIONDATE)
编辑:抱歉。这实际上是mysql格式。对于Oracle格式,选择的答案更合适。
答案 1 :(得分:2)
You can easily use the SUBSTRING function :
SELECT SUBSTRING(ACTIONDATE, 1, 9) as ACTION_Day,COUNT(SUBSTRING(ACTIONDATE, 1, 9)) AS count FROM table1 GROUP BY SUBSTRING(ACTIONDATE, 1, 9)
output:
01-JAN-86 1
01-JAN-92 1
03-JAN-01 2
答案 2 :(得分:1)
您可以使用TRUNC
删除时间部分:
SELECT TRUNC(ACTIONDATE, 'DD'), count(1) AS count
FROM mytable
GROUP BY TRUNC(ACTIONDATE, 'DD');
TRUNC
将日期的一部分截断到指定的部分,在本例中为截止日期。
例如,在SYSDATE
上使用带有'DD'的TRUNC返回:
SELECT TRUNC(SYSDATE, 'DD') FROM dual;
TRUNC(SYSDATE,'DD') ------------------- 13/11/21 00:00