sql写出有数据的近三天,要略过周末
时间: 2024-03-27 09:40:14 浏览: 17
你好!针对你的问题,可以使用以下 SQL 语句查询有数据的近三天,略过周末:
```
SELECT * FROM your_table
WHERE your_date_column >= DATE_SUB(CURDATE(), INTERVAL IF(DAYOFWEEK(CURDATE()) = 2, 3, 1) DAY)
AND your_date_column < CURDATE()
AND DAYOFWEEK(your_date_column) NOT IN (1,7);
```
其中,`your_table` 和 `your_date_column` 分别替换成你的表名和日期列名。这条 SQL 语句的作用是:
- `CURDATE()` 函数获取当前日期。
- `DAYOFWEEK()` 函数获取当前日期的星期几,星期天为 1,星期一为 2,以此类推。
- `IF()` 函数判断当前日期是否为周一,如果是,则需要查询三天前(即包括周六和周日),否则只需要查询昨天和前天两天的数据。
- `DATE_SUB()` 函数根据上一步判断的天数进行日期减法操作,获取需要查询的起始日期。
- `AND` 条件筛选出日期在起始日期到昨天之间且非周末的数据。
希望能够帮到你!如果还有其他问题,请继续提问。
相关问题
sql写出有数据的近三天
假设你要查询名为"table_name"的表中最近三天有数据的记录,可以使用以下 SQL 语句:
```
SELECT * FROM table_name
WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 2 DAY);
```
其中,`create_time`为记录的创建时间字段,`CURDATE()`返回当前日期,`DATE_SUB()`函数用于减去时间间隔,这里减去了2天,即查询最近三天的数据。
sql有数值的近三天的数据
您好,您的 SQL 查询语句可以参考以下示例:
```sql
SELECT DISTINCT TASK_NO, SUM(amount)
FROM your_table
WHERE MY_CS_STS='02-处理中'
AND ASSIGN_DT BETWEEN DATEADD(day, -3, '2.2') AND '2.2'
GROUP BY TASK_NO;
```
其中,`your_table` 是您要查询的数据表,`amount` 是您要统计的数值列名。这个查询语句会查询自催状态为处理中,分配日期在报告日期向前推三天范围内的数据,并根据任务编号去重累加数值列。
需要注意的是,语句中的日期格式需要根据您的数据库设置进行调整。另外,如果您的数据量较大,上述语句可能会比较耗时,可以考虑根据具体情况进行优化。