pgsql 查询2022年9-12已登陆且在2023年1-5月未登客户
时间: 2024-03-17 16:41:46 浏览: 134
可以使用如下的 SQL 查询语句:
```
SELECT *
FROM customers
WHERE status = '已登' AND
(EXTRACT(YEAR FROM last_login) = 2022 AND EXTRACT(MONTH FROM last_login) >= 9 AND EXTRACT(MONTH FROM last_login) <= 12) AND
(EXTRACT(YEAR FROM last_login) < 2023 OR (EXTRACT(YEAR FROM last_login) = 2023 AND EXTRACT(MONTH FROM last_login) < 1));
```
其中,`customers` 是客户表的名称,`status` 是客户状态的列名,`last_login` 是客户最后登录时间的列名。
该查询语句的含义是查询客户状态为“已登”,且最后登录时间在2022年9月至12月之间,并且在2023年1月至5月之外的客户信息。
需要注意的是,该查询语句使用了 PostgreSQL 的日期函数 `EXTRACT` 来获取最后登录时间的年份和月份,因此需要保证 `last_login` 列的数据类型为日期或时间戳。
相关问题
pgsql 查询2022年9-12已登且2023年1-5月未登客户
您好!针对您的问题,可以使用以下SQL查询语句:
```
SELECT *
FROM customers
WHERE status = '已登'
AND (
(EXTRACT(YEAR FROM last_login) = 2022 AND EXTRACT(MONTH FROM last_login) > 8)
OR
(EXTRACT(YEAR FROM last_login) = 2023 AND EXTRACT(MONTH FROM last_login) < 6)
)
AND EXTRACT(MONTH FROM registration_date) BETWEEN 9 AND 12
AND EXTRACT(YEAR FROM registration_date) = 2022;
```
其中,`customers`为客户表的表名,`status`为客户状态列的列名,`last_login`为最后登录时间列的列名,`registration_date`为注册日期列的列名。
此查询语句会返回所有状态为“已登”、最后登录时间在2022年9月~2023年5月之外、注册日期在2022年9月~12月之间的客户信息。请根据实际情况修改表名和列名。
pgsql查询2022年9-12月已登录且2023年1-5月未登录且in_operator不是DX的数据
您可以使用以下 SQL 查询语句来实现您的需求:
```
SELECT *
FROM your_table
WHERE
extract(year from login_time) = 2022
AND extract(month from login_time) >= 9
AND extract(month from login_time) <= 12
AND NOT EXISTS (
SELECT 1
FROM your_table subquery
WHERE
extract(year from subquery.login_time) = 2023
AND extract(month from subquery.login_time) BETWEEN 1 AND 5
AND subquery.user_id = your_table.user_id
)
AND in_operator != 'DX';
```
其中,`your_table` 是您要查询的表名,`login_time` 是记录用户登录时间的字段名,`in_operator` 是记录用户所属运营商的字段名,`user_id` 是记录用户 ID 的字段名。
这个查询语句会返回在 2022 年 9-12 月份中登录过,但在 2023 年 1-5 月份没有登录过,且所属运营商不是 DX 的数据。查询语句使用了一个子查询来查找用户在 2023 年 1-5 月份的登录记录,如果存在这样的记录,则不会返回该用户。
阅读全文