📜  sql 选择上周的数据 - SQL (1)

📅  最后修改于: 2023-12-03 14:47:38.576000             🧑  作者: Mango

SQL选择上周的数据

在SQL中,使用日期函数和条件语句可以轻松选择指定时间段的数据。要选择上周的数据,我们需要找到上周的开始日期和结束日期,然后以这两个日期为条件筛选数据。

找到上周的开始日期和结束日期

我们可以使用DATE_ADD函数和WEEKDAY函数来找到上周的开始日期和结束日期。在MySQL中,这两个函数的用法如下:

-- 找到上周的开始日期和结束日期
SELECT DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE())-6 DAY) AS last_week_start_date,
       DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE()) DAY) AS last_week_end_date;

这里的DATE_ADD函数用于偏移日期,INTERVAL -WEEKDAY(CURDATE())-6 DAY表示偏移到本周的第一天,再向前偏移6天,即本周的第一天的前一天,即上周的开始日期。同样,INTERVAL -WEEKDAY(CURDATE()) DAY表示偏移到本周的最后一天,即下周的第一天,再向前偏移1天,即本周的最后一天,即上周的结束日期。

选择上周的数据

有了上周的开始日期和结束日期,我们就可以用它们来选择上周的数据了。我们可以使用WHERE子句和BETWEEN运算符来设置筛选条件。示例如下:

-- 选择上周的数据
SELECT *
FROM table_name
WHERE date_column BETWEEN DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE())-6 DAY)
                       AND DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE()) DAY);

上面的代码中,table_name和date_column分别代表表名和日期列名,需要根据实际情况进行替换。WHERE子句中的BETWEEN运算符用于筛选date_column列数据在上周开始日期和结束日期之间的记录。

完整代码片段

综上所述,以下是用于选择上周数据的完整SQL代码片段:

-- 找到上周的开始日期和结束日期
SELECT DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE())-6 DAY) AS last_week_start_date,
       DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE()) DAY) AS last_week_end_date;

-- 选择上周的数据
SELECT *
FROM table_name
WHERE date_column BETWEEN DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE())-6 DAY)
                       AND DATE_ADD(CURDATE(), INTERVAL -WEEKDAY(CURDATE()) DAY);

其中,table_name和date_column需要根据实际情况进行替换。