zoukankan      html  css  js  c++  java
  • 一个存储过程的机试

      题目大体意思如下:

      比如淘宝上我要买东西,我要求是2012-07-25日到货,假设运输需要10天的时间,25日没有到则我不签收了,不支付钱了。假设淘宝上的店家周六周日不上班,不发货,也就是说如果我要25日到货,你需要运输10天,10天前刚好是周末,而周末是不发货的,那么就要提前发货,运输时间可能只要1天,可能是2天,也可能是半个月,请你写一个SQL的存储过程查询提前到那一天发货好呢?

      我是这样的做的:

    create proc P_GetShipmentsDate
    @ArriveDate datetime,
    @Days int
    as
        select (
        --如果要到达的时间减去运输时间是周六则提前一天也就是周五发货
        case when DATEPART(DW,DATEADD(D,-@Days,@ArriveDate))=7 then DATEADD(D,-1,DATEADD(D,-@Days,@ArriveDate))
        --如果是周日则提前二天发货
        when DATEPART(DW,DATEADD(D,-@Days,@ArriveDate))=1 then DATEADD(D,-2,DATEADD(D,-@Days,@ArriveDate))
        --其它的时间则是到达时间减去运输的时间那天发货
        else DATEADD(D,-@Days,@ArriveDate)
         end)
    go
    --11日前三刚好是星期日,所以要提前到周五货
    exec P_GetShipmentsDate '2012-07-11',3

    咱觉得有效率不是很高,各位高手有什么好的写法,还请赐教,小弟感激不尽。。。

    欢迎访问草根帮【https://www.caogenbang.top】 草根帮带你走向人生巅峰,迎娶白富美!!!
  • 相关阅读:
    BZOJ3868 : The only survival
    BZOJ3740 : pku2842 N-dimension Matching N维匹配
    BZOJ2990 : [Ontak2010]Keyboard
    BZOJ3548 : [ONTAK2010]Party
    BZOJ3189 : [Coci2011]Slika
    BZOJ2679 : [Usaco2012 Open]Balanced Cow Subsets
    BZOJ2981 : [Poi2002]括号
    BZOJ4116 : [Wf2015]Tours
    BZOJ4107 : [Wf2015]Asteroids
    BZOJ4118 : [Wf2015]Window Manager
  • 原文地址:https://www.cnblogs.com/koeltp/p/2587213.html
Copyright © 2011-2022 走看看