日期范围之间的 PostgreSQL 查询
我们将在本文中讨论 PostgreSQL 中不同类型的范围。
PostgreSQL 中的范围类型
默认情况下,Postgres 提供了一些范围来比较这些值。
Postgres 中有一个 daterange
类型来比较日期。此外,我们可以使用 between
来比较日期。
为了演示,让我们创建一个表并用一些数据填充它。
架构 SQL:
CREATETABLElogger(idSERIALPRIMARYKEY,nameVARCHAR(255)NOTNULL,login_dateDATENOTNULLDEFAULTCURRENT_DATE);
填充表后,执行此 Postgres Query SQL。
select*fromlogger;
输出:
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)
在 Postgres 中使用 INTERVAL
和日期类型的差异
假设你想要所有姓名以及 id
、谁登录数据库以及到目前为止花费了多少天,并且你只想查看最近 120 天登录的人。
查询 SQL:
SELECTid,name,now()-login_dateastime_spentfromloggerWHERElogin_date>(CURRENT_DATE-INTERVAL'120 days');
你可以在间隔中放置小时、天、月和年。
输出:
id|name|time_spent----+------+-------------------------
5|Jene|21days11:44:35.7906856|Dan|54days11:44:35.790685(2rows)
在 Postgres 的日期类型中使用 between
如果你想查看谁在 2021 年和当前日期之间登录,可以运行以下 SQL 命令。
查询 SQL:
WHERElogin_datebetween'2021-01-01'ANDCURRENT_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
。因此,当你尝试插入或编写查询时,请确保使用 Postgres 数据库支持的格式。
这里是 Postgres 中日期数据类型格式的文档。
在 Postgres 的日期类型中使用 daterange
假设你想查看在日期范围之间登录的用户。例如,2021 年 6 月 6 日至 2022 年 3 月 10 日。
执行以下 SQL 命令:
查询 SQL:
SELECT*FROMloggerWHERE'[2021-06-06, 2022-03-10]'::daterange@>login_date;
我们使用了::daterange
,这意味着我们将范围类型转换为日期数据类型。 @>
称为范围运算符,它也可以用于不同数据类型的其他范围查询。
输出:
id | name | login_date
----+------+------------
3 | Bon | 2021-06-06
5 | Jene | 2022-02-22
6 | Dan | 2022-01-20
(3 rows)
此外,你也可以在范围内使用 CURRENT_DATE
。你需要记住,在方括号内,第一个日期是范围的开始日期,第二个日期是范围的结束日期。
对于结束日期,你也可以写 infinity
。要了解有关日期范围的更多信息,你可以访问以下网站此处。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。