date_trunc PostgreSQL函数等于mySQL

时间:2015-02-06 12:49:47

标签: mysql postgresql

我试图检索数据以进行统计,我使用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

1 个答案:

答案 0 :(得分:3)

您的案例的等价物是date()

select date(created_at), count(*)
from requests
. . .

这不是一般替换,但它可以删除日期的时间部分。

编辑:

这两个数据库的更好解决方案可能是:

select cast(created_at as date)

这是ANSI标准,适用于这两个数据库(以及SQL Server)。我个人一般不会使用它,以免我在Oracle中意外使用它,导致很难发现错误。 ({date在Oracle中有一个时间组件,唉。)