2010-08-19 52 views
3

给定一个表格,其中包含一列字符串“timestamps”(yyyyMMddHHmmssSSS格式),我想子字符串的前8个字符,并获得有多少行有该子字符串,分组结果。Oracle SQL查询计数组按时间戳子串

采样数据...

TIMESTAMP 
20100802123456123 
20100803123456123 
20100803123456123 
20100803123456123 
20100804123456123 
20100805123456123 
20100805123456123 
20100805123456123 
20100805123456123 
20100806123456123 
20100807123456123 
20100807123456123 

...和预期的结果...

SUBSTRING, COUNT 
20100802, 1 
20100803, 3 
20100804, 1 
20100805, 4 
20100806, 1 
20100807, 2 

我知道这应该是很容易的,但我并没有在任何时刻运气。

+2

如果您将其保存为'DATE',那么你可以使用'TRUNC(date_column)' – 2010-08-19 23:57:36

回答

7

我没有一个数据库来测试,但好像你正在寻找

select 
    substr(timestamp, 1, 8), 
    count(*) 
from 
    my_table 
group by 
    substr(timestamp, 1, 8); 
+0

我认为这可能会诀窍。非常感谢你。我试图做substring()作为YMD,然后由YMD分组。 – krick 2010-08-20 00:12:55