sql写出有数据的近三天
时间: 2024-03-27 11:40:05 浏览: 81
假设你要查询名为"table_name"的表中最近三天有数据的记录,可以使用以下 SQL 语句:
```
SELECT * FROM table_name
WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 2 DAY);
```
其中,`create_time`为记录的创建时间字段,`CURDATE()`返回当前日期,`DATE_SUB()`函数用于减去时间间隔,这里减去了2天,即查询最近三天的数据。
相关问题
sql写出有数据的近三天,要略过周末
你好!针对你的问题,可以使用以下 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` 条件筛选出日期在起始日期到昨天之间且非周末的数据。
希望能够帮到你!如果还有其他问题,请继续提问。
hive保留三年内月末数据sql怎么写
在Hive中,如果你想保留最近三年每个月的月底数据,你可以使用`DATE_TRUNC`函数结合`MONTH`和`YEAR`函数以及`DATEDIFF`函数来筛选出满足条件的数据。假设你有一个名为`sales_data`的表,其中包含`sale_date`列记录销售日期,你可以尝试使用以下SQL查询:
```sql
CREATE TABLE if not exists monthly_sales AS
SELECT * FROM sales_data
WHERE sale_date >= ADD_DATE(CURRENT_DATE(), - INTERVAL '36 months') -- 最近三年
AND sale_date = DATE_TRUNC('month', sale_date) -- 只保留每月最后一天的数据
-- 如果你想清理掉超过三年的旧数据,可以创建一个新的表并删除旧数据
CREATE TABLE sales_data_temp AS
SELECT * FROM monthly_sales;
DROP TABLE IF EXISTS sales_data; -- 删除原始表(假设不再需要)
ALTER TABLE sales_data_temp RENAME TO sales_data; -- 将临时表改名替换原表
```
这个查询首先创建了一个新的名为`monthly_sales`的表,包含了最近三年每月最后一天的销售数据。然后,如果需要删除旧的不符合条件的数据,会创建一个临时表`sales_data_temp`,将新数据保存,并删除原来的`sales_data`表,再将临时表重命名。
阅读全文