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

yizhihongxing

找出当前月份的第一个和最后一个星期一,可以使用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日

相关文章

  • python 对redis 键值对的操作

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的键值对容器。类似python中的dict,javascript的jaon,java 的map,每一个Hash可以存储4294967295个键值对。 1 # encoding:utf-8 2 import redis 3 import time 4 5 6 def …

    Redis 2023年4月16日
    00
  • 如何使用Python实现数据库中数据的全文检索?

    以下是使用Python实现数据库中数据的全文检索的完整攻略。 数据库中数据的全文检索简介 在数据库中,全文检索是指根据关键字检索查询。在Python中,可以使用pymysql连接到MySQL数据库,并使用SELECT语句实现全文检索。 步骤1:连接数据库 在Python中,可以使用pymysql连接MySQL数据库。以下是连接到MySQL的基本语法: imp…

    python 2023年5月12日
    00
  • 速学linux命令教程

    下面是详细讲解“速学linux命令教程”的完整攻略: 前言 Linux 命令的学习是 Linux 学习中的关键和难点之一。《速学 Linux 命令教程》是用简明易懂的方式解析 Linux 命令,旨在帮助初学者快速掌握常用的 Linux 命令。 该教程内容覆盖 Linux 命令的基础知识,包括文件、目录、权限、进程等,也包括部分高级操作,如文本编辑、网络管理、…

    database 2023年5月22日
    00
  • IP连接SQL SERVER失败(配置为字符串失败)图文解决方法

    下面是详细讲解“IP连接SQL SERVER失败(配置为字符串失败)图文解决方法”的完整攻略。 问题描述 在使用 SQL SERVER 的过程中,有时会出现无法通过 IP 连接 SQL SERVER 的情况,而这种情况可能是因为配置为字符串失败导致的。 解决方法 要解决这个问题,我们需要进行以下几个步骤: 1. 修改 SQL SERVER 配置文件 首先,我…

    database 2023年5月21日
    00
  • Redis 5.05 单独模式安装及配置方法

    Redis 5.05 单独模式安装及配置方法 简介 Redis 是一个开源的 in-memory 数据结构存储系统,可用作数据库、缓存和消息代理。 本文将介绍 Redis 5.05 单独模式的安装方法以及必要的配置。 安装 下载 Redis 访问 Redis 官网 可以获取 Redis 的最新版本。在本文撰写时,Redis 的最新版本为 6.0.8。这里我们…

    database 2023年5月22日
    00
  • MySql连接查询方式详解

    MySql连接查询方式详解 在MySQL中,连接查询是一种重要的查询方式,它可以通过连接多张表的关联字段,将这些表中不同的数据进行合并,形成全新的查询结果。本篇攻略将详细讲解连接查询的使用方法及使用场景。 连接查询的类型 在MySQL中,连接查询类型主要分为左连接、右连接、内连接和全连接四种。其中,左连接和右连接也被称为外连接。 左连接(Left Join)…

    database 2023年5月22日
    00
  • MySQL DML语句整理汇总

    MySQL DML语句整理汇总是一篇介绍MySQL数据操作语句的文章,本文将详细讲解MySQL DML语句的用法。 DML语句概述 DML(Data Manipulation Language),数据操作语言,是一种用于查询和修改数据的语言,常见的DML语句有SELECT、INSERT、UPDATE、DELETE等。 SELECT语句 SELECT语句用于查…

    database 2023年5月21日
    00
  • Sql Server 分组统计并合计总数及WITH ROLLUP应用

    下面我来为你详细讲解 “Sql Server 分组统计并合计总数及WITH ROLLUP 应用” 的完整攻略。 什么是分组统计? 在 SQL Server 中,分组统计是统计数据时将数据按照某个列或某几个列进行分组,然后统计某些列的数值计算出来的过程。在分组统计中,经常用到的是 GROUP BY 语句。GROUP BY 语句使用时,必须要指定按照哪个字段进行…

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