欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【MySQL查询不含周末的五天前的日期】,下面是详细的分享!
MySQL查询不含周末的五天前的日期
我需要查询从现在算起五天前的日期。按照商业习惯,这五天应该不包含星期六和星期天。
专家回答:
对于许多跟商业日期有关的情况,最好的解决方案是使用日历表格。例如,使用办公时间(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
这个查询可以获得“五天前”下订单而货还没有运到的客户的联系方式。
以上所分享的是关于MySQL查询不含周末的五天前的日期,下面是编辑为你推荐的有价值的用户互动:
相关问题:mysql 怎么查询前七天的日期?
答:SELECT * FROM table1 WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) > 7; >>详细
相关问题:mysql 查询单前日期 到 10天后的记录
答:没明白..当前日期 的数据有..可以理解...没理解10天后怎么会有数据的??? >>详细
相关问题:mysql数据库中如何查询出是周六和周日的数据
答:DATEOFWEEK(field) ; 周日=1 ····· 周六=7 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
