按特定月份过滤时间戳

时间:2017-03-12 18:52:10

标签: sql postgresql timestamp

我是postgres的新手,非常感谢任何建议。我有一个带有timestamp列的postgres表,其值的格式为:1970-01-01 00:00:00

我的目标是选择过去三个月的记录 - 2016年12月,2017年1月和2017年2月。如何使用SELECT仅使用读取权限来编写此查询?

当我开始时:

SELECT to_char("start_time", 'YYYY-MM-DD HH:MM:SS') FROM trips;

时间转换为AM / PM,但我只对按月和年分别提取和分组感兴趣

3 个答案:

答案 0 :(得分:2)

你走了:

SELECT *
FROM trips
WHERE start_time BETWEEN '2016-01-01 00:00:00'::timestamp AND '2017-02-28 23:59:59'::timestamp;

答案 1 :(得分:0)

这是一种方法:

select t.*
from t
where start_date >= date_trunc('month',now() - interval '3' month) and
      start_date < date_trunc('month', now());

答案 2 :(得分:0)

您可以使用extractdate_trunc函数在postgresql中提取月份。

非常类似于问题get last three month records from table

有关postgresql中日期时间函数的更多详细信息,请使用以下链接。

https://www.postgresql.org/docs/9.1/static/functions-datetime.html