MySQL查询不含周末的五天前的日期
发布时间:2008-11-11 12:28:00
我需要查询从现在算起五天前的日期。按照商业习惯,这五天应该不包含星期六和星期天。
专家回答:
对于许多跟商业日期有关的情况,最好的解决方案是使用日历表格。例如,使用办公时间(2001年5月22日)查询两个日期之间的时间差。
我们知道在这个例子中,假日不会计算在内。很难明白为什么假日不被计算在内,但是周末却会被计算在内。但是既然假日不被计算在内,我们就可以应用一个公式。要开发这个公式,让我们首先探讨一下所有的可能性。
如果今天是星期一,那么,往回数,我们跳过星期天和星期六,星期五是一天前,星期四是两天前,如此类推,那么“五天前”就是上个星期一。这里的“五天前”就意味着把周末排除出去,得出我们想要的日期,并不是真正字面意义上的五天前。我们可以从备忘录上看到差别。
如果今天是星期二,那么,往回数,星期一是一天前,跳过星期天和星期六,星期五是两天前,星期四是三天前,如此类推,那么“五天前”就是上个星期二。
这个模式——“五天前”就是上一个星期的同一天(星期X)——可重复到星期三、星期四和星期五。
到了星期六,这个模式就不可用了。在星期六,五天前是星期一。在星期天,因为我们不计算星期六,五天前也是星期一。
把我们的讨论发现总结成如下数据:
要获得“五天前”的日期,从今天减去的总天数(包括周末)显示在右边列中。
我们给一个星期里的每一天排上序号,星期天(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句法的例子:
以下为引用的内容:
selectdistinct
cust.fname
,cust.lname
,cust.phone
fromordersaso
inner
joincustomersascust
oncust.id=orders.cust_id
whereo.date_ordered=
date_sub(current_date
,interval
7-2*floor(dayofweek(current_date)/7)
+floor((dayofweek(current_date)-2)/7)
day)
ando.date_shippedisnull
这个查询可以获得“五天前”下订单而货还没有运到的客户的联系方式。
猜你喜欢
- 建表,主键自增create table aaa(id bigint identity(1,1) not null PRIMARY key,n
- 本文实例讲述了PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法。分享给大家供大家参考,具体如下:前面一篇 PHP递归实现文件夹的复制
- 今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据
- 分享几个字体设计:1.巧克力2.绿野邂逅是人间四月天3.去年花开的时候4.仲夏梦之夜5.芊芊茉莉香6.玫瑰人生7.真情告白8.遮掩锋芒
- 设计网站的同志背景主要有两种:学计算机、学艺术。基本上会写代码的不懂设计,会设计的不懂代码,这个格局似乎到今天还没变。某些学计算机的同学,有
- 本文实例为大家分享了Python密码强弱判断的具体代码,供大家参考,具体内容如下程序说明:通过获取用户输入,判断密码长度是否大于8,同时判断
- 本文实例讲述了JS扩展方法实现技巧。分享给大家供大家参考。具体分析如下:JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对
- ASP+Access数据库的18条安全法则:1.首先,我们需要过滤所有客户端提交的内容,其中包括?id=N一类,另外还有提交的html代码中
- 1、互动流通的活跃度是社区网站的关键,产品设计者大都需要在此猛下药。facebook有利用率最高的minifeed,myspace有“好友的
- 前言:java语言读写.doc的出现乱码问题:大家都知道当我们利用java语言读写.doc文件时,无论是利用流的方式将.doc文件的内容输出
- Fiddler的手机抓包过程1、启动Fiddler打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler
- 目标打包Python selenium 自动化脚本(如下run.py文件)为exe执行文件,使之可以直接在未安装python环境的windo
- 目录1、梳理一下Git、github和gitee这三个之间的关系:1.1、Github1.2、Gitee 1.3、Git2、如何安
- Acunetix Web Vulnerability Scanner 是一款国外产的及其优秀的扫描工具,可以帮忙挖掘网站内的诸多漏洞,包括常
- var gb1 = 10; this.gb2 = 20; function gb3() {}; (function() { var ro =
- 题目描述:给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数样例:给出链表1->2->3->4-&g
- 使用MySQL进行数据库备份,有很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的
- general_log(查询日志)开启和关闭一、查询日志开启方法一:mysql>set global general_log_file
- 在MySQL中,使用While语句循环与SQL Server中有所不同,代码测试通过。 MSSQL中使用while语句循环生成数据的方法:
- 一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装Python并添加到环境