mysql找出周末_MySQL查问不含周末的五天前的日期

我须要查询从如今算起五天前的日期。依照商业习性,这五天应该不包括星期六和星期天。

专家回答:

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

咱们知晓在这个例子中,假日不会计算在内。很难明白为什么假日不被计算在内,但是周末却会被计算在内。但是既然假日不被计算在内,咱们就能够运用一个公式。要开发这个公式,让咱们最先探讨一下一切的能够性。

假设即日是星期一,那么,往回数,咱们跳过星期天和星期六,星期五是一天前,星期四是两天前,如此类推,那么“五天前”就是上个星期一。这里的“五天前”就意味着把周末扫除出去,得出咱们想要的日期,并不是真实字面意义上的五天前。咱们能够从备忘录上看到差异。

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

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

到了星期六,这个方式就不能用了。在星期六,五天前是星期一。在星期天,由于咱们不计算星期六,五天前也是星期一。

把咱们的探讨发觉总结成如下数据:

20104162343971028.jpg

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

咱们给一个星期里的每一天排上序号,星期天(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 fromordersasoinner joincustomersascust  oncust.id=orders.cust_idwhereo.date_ordered=   date_sub(current_date       ,interval   7-2*floor(dayofweek(current_date)/7)    +floor((dayofweek(current_date)-2)/7)          day) ando.date_shippedisnull

这个查询能够取得“五天前”下订单而货还没有运到的客户的联络方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值