mysql查询时间提前五天_MySQL查询不含周末的五天前的日期

2023-11-09 19:59

本文主要是介绍mysql查询时间提前五天_MySQL查询不含周末的五天前的日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我需要查询从现在算起五天前的日期。按照商业习惯,这五天应该不包含星期六和星期天。

专家回答:

对于许多跟商业日期有关的情况,最好的解决方案是使用日历表格。例如,使用办公时间(2001年5月22日)查询两个日期之间的时间差。

我们知道在这个例子中,假日不会计算在内。很难明白为什么假日不被计算在内,但是周末却会被计算在内。但是既然假日不被计算在内,我们就可以应用一个公式。要开发这个公式,让我们首先探讨一下所有的可能性。

如果今天是星期一,那么,往回数,我们跳过星期天和星期六,星期五是一天前,星期四是两天前,如此类推,那么“五天前”就是上个星期一。这里的“五天前”就意味着把周末排除出去,得出我们想要的日期,并不是真正字面意义上的五天前。我们可以从备忘录上看到差别。

如果今天是星期二,那么,往回数,星期一是一天前,跳过星期天和星期六,星期五是两天前,星期四是三天前,如此类推,那么“五天前”就是上个星期二。

这个模式——“五天前”就是上一个星期的同一天(星期X)——可重复到星期三、星期四和星期五。

到了星期六,这个模式就不可用了。在星期六,五天前是星期一。在星期天,因为我们不计算星期六,五天前也是星期一。

把我们的讨论发现总结成如下数据:

200872154429132.bmp

要获得“五天前”的日期,从今天减去的总天数(包括周末)显示在右边列中。

我们给一个星期里的每一天排上序号,星期天(Sunday)=1,星期一(Monday)=2,如此类推,到星期六(Saturday)=7。把这些日子的序号排列在需要减去的天数前,我们会得到如下数据:

if today is

weekday

subtract

Monday

2

7

Tuesday

3

7

Wednesday

4

7

Thursday

5

7

Friday

6

7

Saturday

7

5

Sunday

1

6

公式如下:

subtract = 7 - 2*(weekday/7) + (weekday-2)/7

记住,这是要获得“五天前”的日期而需要从今天减去的天数。在这个公式里,除法是整数除法(即下舍入)。请不要问我这个公式是怎么发现的,反正是试差法的成果。

我们要怎么把这个公式应用到SQL里呢?下面是一个运用MySQL句法的例子:

select distinct

cust.fname

, cust.lname

, cust.phone

from orders as o

inner

join customers as cust

on cust.id = orders.cust_id

where o.date_ordered =

date_sub( current_date

, interval

7 - 2 * floor(dayofweek(current_date)/7)

+ floor((dayofweek(current_date)-2)/7)

day )

and o.date_shipped is null

这个查询可以获得“五天前”下订单而货还没有运到的客户的联系方式。

这篇关于mysql查询时间提前五天_MySQL查询不含周末的五天前的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378205

相关文章

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND