获取当前周第一天和最后一天的实现方法

流程图

flowchart TD
    Start(开始) --> Step1(获取当前日期)
    Step1 --> Step2(计算当前日期是星期几)
    Step2 --> Step3(计算当前日期所在周的第一天)
    Step3 --> Step4(计算当前日期所在周的最后一天)
    Step4 --> End(结束)

状态图

stateDiagram
    [*] --> 获取当前日期
    获取当前日期 --> 计算星期几
    计算星期几 --> 计算第一天
    计算第一天 --> 计算最后一天
    计算最后一天 --> [*]

步骤说明

  1. 获取当前日期:首先需要获取当前日期,以便后续计算。可以使用MySQL中的CURDATE()函数来获取当前日期。代码如下所示:
SET @current_date = CURDATE();
  1. 计算星期几:使用MySQL中的WEEKDAY()函数来计算当前日期是星期几。函数返回值为0到6,其中0代表星期一,1代表星期二,以此类推。代码如下所示:
SET @weekday = WEEKDAY(@current_date);
  1. 计算当前日期所在周的第一天:根据当前日期和星期几的值,可以计算出当前日期所在周的第一天。如果当前日期是星期一,则第一天就是当前日期;如果当前日期不是星期一,则需要减去相应的天数。代码如下所示:
SET @first_day = DATE_SUB(@current_date, INTERVAL @weekday DAY);
  1. 计算当前日期所在周的最后一天:根据当前日期和星期几的值,可以计算出当前日期所在周的最后一天。如果当前日期是星期日,则最后一天就是当前日期;如果当前日期不是星期日,则需要加上相应的天数。代码如下所示:
SET @last_day = DATE_ADD(@current_date, INTERVAL (6 - @weekday) DAY);
  1. 获取结果:最后,可以使用@first_day@last_day来获取当前周的第一天和最后一天。代码如下所示:
SELECT @first_day AS first_day, @last_day AS last_day;

代码解释

  1. SET @current_date = CURDATE();:使用CURDATE()函数获取当前日期,并将其赋值给变量@current_date

  2. SET @weekday = WEEKDAY(@current_date);:使用WEEKDAY()函数计算当前日期是星期几,并将其赋值给变量@weekday

  3. SET @first_day = DATE_SUB(@current_date, INTERVAL @weekday DAY);:使用DATE_SUB()函数和INTERVAL关键字来计算当前日期所在周的第一天,并将其赋值给变量@first_day

  4. SET @last_day = DATE_ADD(@current_date, INTERVAL (6 - @weekday) DAY);:使用DATE_ADD()函数和INTERVAL关键字来计算当前日期所在周的最后一天,并将其赋值给变量@last_day

  5. SELECT @first_day AS first_day, @last_day AS last_day;:使用SELECT语句将计算得到的第一天和最后一天作为结果返回。

完整代码

SET @current_date = CURDATE();
SET @weekday = WEEKDAY(@current_date);
SET @first_day = DATE_SUB(@current_date, INTERVAL @weekday DAY);
SET @last_day = DATE_ADD(@current_date, INTERVAL (6 - @weekday) DAY);
SELECT @first_day AS first_day, @last_day AS last_day;

通过以上代码,我们可以获得当前周的第一天和最后一天。小白开发者可以根据这个方法来实现自己的需求。