Oracle 中的“按天分组”似乎没有按日期分组

wil*_*ill 4 oracle date

我的查询看起来像这样:

select datesent, count(*) the_count from receivedmessaged where status=5000
and datesent>(to_date('20130101', 'YYYYMMDD')) group by datesent
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个表,其中包含每天状态为 5000 的消息计数,比某个日期更新。我得到的是一张重复日期相同的表格。我认为正在发生的是在该日期发送字段中有一个隐藏的时间部分,并且它按照发送的确切时间对条目进行分组,而不仅仅是查看日期。任何人都可以确认这一点并告诉我如何解决它?谢谢!

Syl*_*oux 7

我认为正在发生的是在该日期发送字段中有一个隐藏的时间部分,并且它按照发送的确切时间对条目进行分组,而不仅仅是查看日期。

这很可能是正在发生的事情。所以试试吧:

select TRUNC(datesent), count(*) the_count from receivedmessaged where status=5000
and datesent>(to_date('20130101', 'YYYYMMDD')) group by TRUNC(datesent)
Run Code Online (Sandbox Code Playgroud)

TRUNC将删除“时间部分”并允许您按分组。


请注意,使用TRUNCil 会使您的索引无效。看看你的执行计划。而且如果需要的话,你应该增加一个基于函数的索引TRUNC(datesend)