sql 当前日期大于前两天小于前三天
时间: 2023-10-16 21:11:10 浏览: 142
您可以使用MySQL的日期函数来实现此操作。以下是一个示例查询,它将返回当前日期大于前两天小于前三天的记录:
```sql
SELECT * FROM your_table
WHERE date_column BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND DATE_SUB(CURDATE(), INTERVAL 2 DAY);
```
请注意,这假设您的日期存储在名为`date_column`的列中。如果日期存储在不同的列中,请相应地更改查询。
相关问题
sql 某个时间变量大于前两天小于前三天
假设你要筛选的时间字段为 `time_field`,可以使用如下 SQL 语句来实现:
```sql
SELECT *
FROM your_table
WHERE time_field > DATE_SUB(CURDATE(), INTERVAL 3 DAY)
AND time_field < DATE_SUB(CURDATE(), INTERVAL 2 DAY);
```
这个语句的意思是,选择 `time_field` 大于前三天且小于前两天的记录。`DATE_SUB(CURDATE(), INTERVAL 3 DAY)` 表示当前日期减去三天,`DATE_SUB(CURDATE(), INTERVAL 2 DAY)` 表示当前日期减去两天。
flink sql 求三天连续登录
在Apache Flink SQL中,如果你想要计算用户三天连续登录的数据,你需要首先有一个包含用户登录日志的时间戳字段,通常假设这个字段叫做`login_time`。你可以使用窗口函数(Window Function)来实现这个需求,例如使用滑动窗口(sliding window)。这里是一个简单的示例:
```sql
WITH user_activity AS (
SELECT
user_id,
login_time,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_time) as row_num
FROM your_table_name
)
SELECT
user_id,
COUNT(*) as consecutive_days_login
FROM
user_activity
WHERE
row_num = 1 AND
DATE(login_time) - INTERVAL '1 day' <= DATE(lag(login_time, 2) OVER (PARTITION BY user_id ORDER BY login_time))
GROUP BY
user_id,
DATE(login_time)
HAVING
SUM(CASE WHEN row_num = 1 THEN 1 ELSE 0 END) >= 3
```
这个查询首先按用户分组并排序每个用户的登录时间,然后通过`lag`函数获取前两个登录时间。如果当前日期减去一天小于等于前一天的登录日期,并且当天是第一个登录记录(row_num=1),那么就认为这是连续登录的一天。最后,统计连续登录天数大于等于3的用户。
阅读全文