我试图检索数据以进行统计,我使用mySQL并且我无法使用以下函数 - postgreSQL正在运行。
我想检索上个月的请求并计算每天的新请求数量。
PostgreSQL的
SELECT count(*), date_trunc('day', created_at) as date FROM requests
WHERE(created_at > '2014-08-13 00:00:00') GROUP BY 2 ORDER BY 2 ASC;
* mySQL - 我的代码*
SELECT count(EXTRACT(DAY FROM created_at)), EXTRACT(DAY FROM created_at) as date
FROM `requests`
WHERE EXTRACT(DAY FROM NOW() - INTERVAL 1 MONTH)
GROUP BY date
最终代码
SELECT count( * ) , date( created_at ) AS date
FROM `requests`
WHERE DATE( created_at ) > DATE( DATE_SUB( NOW( ) , INTERVAL 1 MONTH ) )
GROUP BY date
答案 0 :(得分:3)
您的案例的等价物是date()
:
select date(created_at), count(*)
from requests
. . .
这不是一般替换,但它可以删除日期的时间部分。
编辑:
这两个数据库的更好解决方案可能是:
select cast(created_at as date)
这是ANSI标准,适用于这两个数据库(以及SQL Server)。我个人一般不会使用它,以免我在Oracle中意外使用它,导致很难发现错误。 ({date
在Oracle中有一个时间组件,唉。)