sql - 日期范围之间的 Postgresql 查询

标签 sql postgresql date intervals between

我正在尝试查询我的 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 等。


这种结构还有一个优点是可以保持索引的使用。


许多人可能会建议使用如下形式,但他们使用索引:

WHERE
      DATEPART('year',  login_date) = 2014
  AND DATEPART('month', login_date) = 2

这涉及计算表中每一行的条件(扫描)而不是使用索引来查找将匹配的行范围(范围查找)。

关于sql - 日期范围之间的 Postgresql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335970/

相关文章:

postgresql - 昨天时间和今天时间之间的postgres查询

Javascript 按年份 DESC、月份 ASC、日期 ASC 对数组中的日期进行排序

javascript - 从 JSON 调用返回数组时遇到问题

sql - 查询中会使用部分索引吗?

sql - 如果记录已存在,则停止在表中插入

java - 字符串到java中的日期时间

Java获取上周的日期列表

用于匹配两个表中的列的 SQL 查询

postgresql - 从 AWS Aurora 迁移到本地 Postgres 9.6 数据库

postgresql - 在数据库管理中使用 View 而不是表是一种好的编程习惯吗