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日

相关文章

  • SQL 以指定顺序返回查询结果

    要指定SQL查询结果的返回顺序,可以使用ORDER BY子句。ORDER BY子句用于按照一个或多个列中的值对查询结果进行排序。下面是关于如何使用ORDER BY子句来指定查询结果的完整攻略。 1. 语法 SELECT 列名 FROM 表名 ORDER BY 列1 ASC/DESC, 列2 ASC/DESC, …; 其中,SELECT语句用于指定要查询的…

    database 2023年3月27日
    00
  • 详解Linux 主机网络接入配置

    详解Linux主机网络接入配置 在Linux主机中,网络接入配置是很重要的一个环节,本文将详细讲解Linux主机网络接入配置的完整攻略。 确认网络适配器名称 在进行网络接入配置前,需要先确认使用的网络适配器名称。可以通过以下命令查看: ifconfig 例如,系统中有eth0和eth1两个适配器: eth0 Link encap:Ethernet HWadd…

    database 2023年5月22日
    00
  • MySQL系列教程小白数据库基础

    关于MySQL系列教程小白数据库基础,我可以给你提供一些完整的攻略。 MySQL系列教程小白数据库基础 1. MySQL基础介绍 MySQL是一种开源的关系型数据库管理系统,它是一个非常流行的数据库解决方案。 1.1 MySQL工作原理 MySQL采用客户端/服务器架构,并分为两个部分: MySQL服务端和客户端。服务端负责处理所有数据库请求,而客户端则用于…

    database 2023年5月19日
    00
  • Oracle递归查询简单示例

    概念与语法 Oracle递归查询即使用“WITH RECURSIVE”语句进行的递归查询。其基本语法如下所示: WITH RECURSIVE subquery_name [(column_name[, column_name]…)] AS ( initial_query UNION [ALL|DISTINCT] recursive_query ) SEL…

    database 2023年5月21日
    00
  • MySQL数据库使用mysqldump导出数据详解

    MySQL是一个非常流行的关系型数据库管理系统,它具有高效、可靠、安全等特点。在实际的数据库操作过程中,我们常常需要备份和恢复数据。mysqldump命令是MySQL自带的备份工具,可以在快速、安全、方便地备份和还原MySQL数据库。 本篇文章将详细介绍如何使用mysqldump导出数据的完整攻略。 步骤一:连接到MySQL服务器 在使用mysqldump命…

    database 2023年5月18日
    00
  • laravel框架数据库配置及操作数据库示例

    下面是关于”Laravel框架数据库配置及操作数据库示例”的完整攻略: Laravel框架数据库配置 首先,我们需要在Laravel框架中配置数据库,这样我们才能连接和操作数据库。Laravel框架默认使用Eloquent ORM来操作数据库,我们可以通过修改”.env”文件中的数据库连接变量来配置Laravel的数据库。 修改”.env”文件: DB_CO…

    database 2023年5月22日
    00
  • mysql中,通过json_insert函数向json字段插入键值?json_insert函数的使用?

    需求描述:   通过json_insert向json字段中插入值,在此进行实验,记录下. 操作过程: 1.查看已经有的包含json数据类型的表 mysql> select * from tab_json; +—-+——————————————————————–…

    MySQL 2023年4月13日
    00
  • mysql查询字符串替换语句小结(数据库字符串替换)

    MySQL 查询字符串替换语句小结 什么是字符串替换语句? 字符串替换语句是一种用于替换MySQL数据库表中某列的所有匹配项的语句。在很多情况下,我们需要从表中搜索并替换一个特定字符串。因此,MySQL 提供了字符串替换函数,帮助我们轻松找到并替换特定字符串。 MySQL 的字符串替换函数 MySQL中提供了多个字符串替换函数,这里我们主要介绍其中三个: R…

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