我试图查询我的postgresql数据库,以返回日期在特定月份和年份的结果.换句话说,我想要一年中一个月的所有值.
到目前为止,我唯一能做到这一点的方法是:
SELECT user_id
FROM user_logs
WHERE login_date BETWEEN '2014-02-01' AND '2014-02-28'
问题是,在查询表之前,我必须计算第一个日期和最后一个日期.有没有更简单的方法?
谢谢
我试图查询我的postgresql数据库,以返回日期在特定月份和年份的结果.换句话说,我想要一年中一个月的所有值.
到目前为止,我唯一能做到这一点的方法是:
SELECT user_id
FROM user_logs
WHERE login_date BETWEEN '2014-02-01' AND '2014-02-28'
问题是,在查询表之前,我必须计算第一个日期和最后一个日期.有没有更简单的方法?
谢谢
对于日期(和时间),如果使用>= start AND < end
,很多事情会变得更简单.
例如:
SELECT
user_id
FROM
user_logs
WHERE
login_date >= '2014-02-01'
AND login_date < '2014-03-01'
在这种情况下,您仍然需要计算所需月份的开始日期,但这应该以多种方式直接进行.
结束日期也被简化;加上整整一个月.不要和28号、30号、31号等等混在一起.
这种 struct 还有一个优点,就是能够保持索引的使用.
许多人可能会建议使用以下形式,但他们使用do not个索引:
WHERE
DATEPART('year', login_date) = 2014
AND DATEPART('month', login_date) = 2
这涉及到计算表中每一行的条件(扫描),而不是使用索引来查找将匹配的行范围(范围搜索).