2017-07-18 153 views
0

我有一个查询,如下SQL:执行查询的日期范围,但日期明智

select count(*) from schema.tablename where columnname 
Between To_Timestamp ('2017-07-01 00:00:00.000000','YYYY-MM-DDHH24:MI:SS.FF') And 
To_Timestamp ('2017-07-01 23:59:59.000000','YYYY-MM-DDHH24:MI:SS.FF') and column_2='D' order by columnname desc; 

如果我必须执行相同的查询,收集从7月1日的统计数据,以7月17日作为一天明智的话,我必须执行17次查询。

有没有什么办法可以迭代日期,这样我就可以给出开始日期和结束日期,并且查询将在一天内读取行数。例如如下

Date  Number of rows 
7/1/2017 3865 
7/2/2017 2981 
7/3/2017 21391 

谢谢。

+0

Oracle错误来自Oracle,而不是MySQL。 –

回答

0

我想你想:

select date(column_created), count(*) 
from schema.tablename 
group by date(column_created) 
order by date(column_created) desc; 

甲骨文的错误都来自Oracle,MySQL的没有。 Oracle中的语法是:

select trunc(column_created), count(*) 
from schema.tablename 
group by trunc(column_created) 
order by trunc(column_created) desc; 
+0

但它不会给所有日期的统计信息?如果我想限制我在特定日期之间的搜索? –

+0

我可能会让您感到困惑,因为我没有为列名选择较少的命名约定,但我现在已经更正了。请再次查看我的帖子。 –

+0

@十枚硬币。 。 。您仍然可以添加“where”来获取所需的日期范围。 –