迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > PostgreSQL >

PostgreSQL 中日期范围之间的查询

作者:迹忆客 最近更新:2023/05/09 浏览次数:

本文将讨论不同类型的范围来比较 PostgreSQL 中的日期。

PostgreSQL 中的日期范围

默认情况下,PostgreSQL 提供了一些范围来比较这些值。特别是,我们可以使用 daterangebetween 来比较日期。

为了演示,让我们创建一个表并用一些数据填充它。

CREATE TABLE logger(
    id SERIAL PRIMARY KEY,
    name VARCHAR (255) NOT NULL,
    login_date DATE NOT NULL DEFAULT CURRENT_DATE
);

输出:

postgres=# select * from logger;
 id | name  | login_date
----+-------+------------
  1 | Jhon  | 2020-06-06
  2 | Alice | 2022-06-06
  3 | Bon   | 2021-06-06
  4 | Trude | 2020-02-02
  5 | Jene  | 2022-02-22
  6 | Dan   | 2022-01-20
(6 rows)

PostgreSQL 中使用日期的间隔和差异查询日期范围

假设你想要登录到数据库的人的所有姓名(带有 id)以及他们到今天为止的天数。你只想查看过去 120 天内登录的用户。

示例代码:

SELECT id, name, now() - login_date as time_spent from logger
WHERE login_date> (CURRENT_DATE - INTERVAL '120 days');

在这里,你可以在间隔中输入小时、天、月和年。

输出:

 id | name |       time_spent
----+------+-------------------------
  5 | Jene | 21 days 11:44:35.790685
  6 | Dan  | 54 days 11:44:35.790685
(2 rows)

在 PostgreSQL 中使用 between 查询日期范围

你可以运行下面的 SQL 命令来查看谁在 2021 年和当前日期之间登录。

postgres-# WHERE login_date between '2021-01-01' AND CURRENT_DATE;
 id | name | login_date
----+------+------------
  3 | Bon  | 2021-06-06
  5 | Jene | 2022-02-22
  6 | Dan  | 2022-01-20
(3 rows)

这里日期数据类型的格式是 YYYY-MM-DD。因此,当你尝试插入或编写查询时,请确保使用 PostgreSQL 数据库支持的格式。

这里是 PostgreSQL 中日期数据类型格式的文档。

在 PostgreSQL 中使用 daterange 类型查询日期范围

现在,假设你想查看在日期范围(例如 2021-06-06 到 2022-03-10)之间登录的用户。让我们创建查询。

SELECT *
FROM logger
WHERE '[2021-06-06, 2022-03-10]'::daterange @> login_date;

在这里,我们使用::daterange,这意味着我们将范围类型转换为日期数据类型。 @> 称为范围运算符,也可用于其他不同数据类型的范围查询。

输出:

postgres-# WHERE '[2021-06-06, 2022-03-10]'::daterange @> login_date;
 id | name | login_date
----+------+------------
  3 | Bon  | 2021-06-06
  5 | Jene | 2022-02-22
  6 | Dan  | 2022-01-20
(3 rows)

此外,你也可以在范围内使用 CURRENT_DATE。请记住,在方括号内,第一个是开始日期,第二个是范围的结束日期。

对于结束日期,你也可以写 infinity。你可以访问网站此处了解有关日期范围的更多信息。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 PSQL 中运行 SQL 文件

发布时间:2023/03/20 浏览次数:178 分类:数据库

本文解释了如何直接从终端/命令行或 psql shell 运行 SQL 文件。为此,你需要指定主机名、端口、用户名和数据库名称。

在 PostgreSQL 中使用循环

发布时间:2023/03/20 浏览次数:124 分类:PostgreSQL

在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便