我正在尝试使用 SQL 来计算数据库中每个日期的行数
I am trying to use SQL to count the number of rows for each date in my database
我的数据库是这样的:
Date Col2 Col3 Col4
2020-11-02 06:45:16.000 data data data
2020-11-02 07:23:23.111 data data data
2020-12-14 08:55:44.213 data data data
我只需要这样的日期计数:
Date Count
2020-11-02 2
2020-12-14 1
我试过了...
select distinct(Date),
count(*)
from database
...但是日期格式不是我的朋友。任何想法将不胜感激。
在大多数数据库中,您可以通过转换为日期并使用 group by
:
来删除日期部分
select cast(Date as date), count(*)
from database
group by cast(Date as date)
order by cast(Date as date);
不过,各种数据库也有其他的转换方法,例如:
date(date)
在 MySQL.
trunc(date)
在 Oracle 中。
date_trunc('day', date)
在 Postgres 中。
您确实需要使用 count() 函数,这意味着您必须 'group by'。根据您使用的 RDBMS,您还需要格式化日期以取消时间戳。
在 Mysql 你可以试试:
select date_format(date,'%Y-%m-%d'), count(1)
from your_table
group by date_format(date,'%Y-%m-%d')
我的数据库是这样的:
Date Col2 Col3 Col4
2020-11-02 06:45:16.000 data data data
2020-11-02 07:23:23.111 data data data
2020-12-14 08:55:44.213 data data data
我只需要这样的日期计数:
Date Count
2020-11-02 2
2020-12-14 1
我试过了...
select distinct(Date),
count(*)
from database
...但是日期格式不是我的朋友。任何想法将不胜感激。
在大多数数据库中,您可以通过转换为日期并使用 group by
:
select cast(Date as date), count(*)
from database
group by cast(Date as date)
order by cast(Date as date);
不过,各种数据库也有其他的转换方法,例如:
date(date)
在 MySQL.trunc(date)
在 Oracle 中。date_trunc('day', date)
在 Postgres 中。
您确实需要使用 count() 函数,这意味着您必须 'group by'。根据您使用的 RDBMS,您还需要格式化日期以取消时间戳。
在 Mysql 你可以试试:
select date_format(date,'%Y-%m-%d'), count(1)
from your_table
group by date_format(date,'%Y-%m-%d')