SQL 找出当前月份的第一个和最后一个星期一

找出当前月份的第一个和最后一个星期一,可以使用SQL语句结合日期函数来实现。

  1. 第一个星期一的日期

要找出当前月份的第一个星期一,可以使用WEEKDAY函数来获取当前月份的第一天是星期几,并根据星期几来计算第一个星期一的日期。

SELECT 
    CASE 
        -- 第一天是星期一
        WHEN WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')) = 0 THEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')
        -- 第一天是星期二至星期六
        WHEN WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')) IN (1,2,3,4,5,6) THEN DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL (8 - WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01'))) DAY), '%Y-%m-%d')
        -- 第一天是星期日
        ELSE DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY), '%Y-%m-%d')
    END AS firstMonday

在上面的SQL语句中,我们使用了DATE_FORMAT函数来获取当前日期月份的第一天,并使用WEEKDAY函数获取第一天是星期几。根据第一天是星期几,再计算第一个星期一的日期。

  1. 最后一个星期一的日期

要找出当前月份的最后一个星期一,同样可以使用WEEKDAY函数来获取当前月份的最后一天是星期几,并根据星期几来计算最后一个星期一的日期。

SELECT 
    CASE 
        -- 最后一天是星期日
        WHEN WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d')) = 0 THEN DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL -6 DAY), '%Y-%m-%d')
        -- 最后一天是星期一至星期六
        WHEN WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d')) IN (1,2,3,4,5,6) THEN DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL (1 - WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d'))) DAY,'%Y-%m-%d')
        -- 最后一天是星期一
        ELSE DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL -6 DAY), '%Y-%m-%d')
    END AS lastMonday 

在上面的SQL语句中,我们使用了LAST_DAY函数来获取当前日期月份的最后一天,并使用WEEKDAY函数获取最后一天是星期几。根据最后一天是星期几,再计算最后一个星期一的日期。

  1. 完整SQL代码

将上面两条SQL语句合并成一个完整的代码片段:

SELECT 
    CASE 
        WHEN WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')) = 0 THEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')
        WHEN WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')) IN (1,2,3,4,5,6) THEN DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL (8 - WEEKDAY(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01'))) DAY), '%Y-%m-%d')
        ELSE DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY), '%Y-%m-%d')
    END AS firstMonday,
    CASE 
        WHEN WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d')) = 0 THEN DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL -6 DAY), '%Y-%m-%d')
        WHEN WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d')) IN (1,2,3,4,5,6) THEN DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL (1 - WEEKDAY(DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-%d'))) DAY,'%Y-%m-%d')
        ELSE DATE_FORMAT(DATE_ADD(LAST_DAY(CURRENT_DATE), INTERVAL -6 DAY), '%Y-%m-%d')
    END AS lastMonday

以上就是查询当前月份的第一个和最后一个星期一的SQL攻略,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 找出当前月份的第一个和最后一个星期一 - Python技术站

(1)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • centos7安装mysql5.6的方法

    下面是针对centos7安装mysql5.6的完整攻略。 步骤1:安装mysql yum源 首先需要安装mysql yum源,使得系统能够通过yum命令安装mysql5.6。具体操作步骤如下: 下载mysql yum源的rpm包 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noa…

    database 2023年5月22日
    00
  • 深入了解MySQL中的慢查询日志

    关于“深入了解MySQL中的慢查询日志”的攻略,可以从以下几个方面进行介绍。 1. 什么是MySQL慢查询日志 MySQL慢查询日志是MySQL提供的一种机制,用于记录并统计执行时间超过指定阈值的SQL语句,从而帮助用户排查性能问题,优化SQL语句。默认情况下,MySQL慢查询日志是关闭的,需要手动启用。 2. 如何启用MySQL慢查询日志 启用MySQL慢…

    database 2023年5月22日
    00
  • Windows/Mac系统Docker方式安装Mysql(包含utf8)

    下面是详细的攻略: 准备工作 在开始安装Mysql之前,需要先安装Docker。如果你已经安装好了Docker,可以直接跳过这一步。 Windows系统 Windows用户需要前往Docker官网下载并安装Docker Desktop软件,Windows 10版本以上的用户可以在以下链接中下载: https://hub.docker.com/editions…

    database 2023年5月22日
    00
  • Linux下MySQL安装配置 MySQL配置参数详解

    Linux下MySQL安装配置 1. 安装MySQL 在Linux中,我们可以通过包管理器(如apt、yum等)来安装MySQL。以下以Ubuntu为例: sudo apt-get update sudo apt-get install mysql-server 安装完成之后,MySQL服务器会自动启动。 2. 配置MySQL 2.1 修改MySQL配置文件…

    database 2023年5月22日
    00
  • Redis清除某个端口号的缓存

    1、cmd切换到redis目录下 2、redis-cli -p 6379回车 3、flushall           C:\Users\Treasure>D: D:\>cd D:\software\Redis-x64-3.0.504 D:\software\Redis-x64-3.0.504>redis-cli -p 6379127.0.…

    Redis 2023年4月13日
    00
  • MySQL数据库优化技术之索引使用技巧总结

    MySQL数据库优化技术之索引使用技巧总结 什么是MySQL索引 MySQL索引是一种数据结构,能够帮助数据库高效地检索数据。索引可以理解为一张目录表,其中列出了每行的主键和对应的数据所在位置,这样在查询数据时就可以直接通过搜索索引,找到对应数据所在位置。 为什么需要使用MySQL索引 MySQL索引可以大大提高查询数据的效率,尤其是在处理大量数据时。如果没…

    database 2023年5月19日
    00
  • php代码出现错误分析详解

    PHP代码出现错误分析详解 在PHP开发中,出现错误是非常常见的事情。当代码出现错误时,我们需要对错误进行分析,找出错误的原因并进行修复。本文将详细讲解如何对PHP代码出现错误进行分析,以及如何进行逐步排错的过程。 1. 阅读错误信息 当PHP代码出现错误时,PHP会返回一段错误信息。这个错误信息可以帮助我们判断错误的原因。我们需要认真阅读错误信息,了解错误…

    database 2023年5月21日
    00
  • MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法

    当我们想要删除 MySQL 数据库表中的外键时,有时可能会遇到错误提示 “Error Code: 1091. Can‘t DROP ‘XXX‘的解决方法”,其中 XXX 代表的是外键名。这种错误提示往往是由于外键约束导致,下面我们来介绍一下如何解决这个问题。 1. 外键约束的作用 在 MySQL 中,外键约束主要用于维护表之间的关联关系,保证表之间数据的完整…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部