六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 832|回复: 0

一个存储过程的机试

[复制链接]

升级  70.67%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
156
 楼主| 发表于 2012-12-30 16:14:13 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">  题目大体意思如下:
  比如淘宝上我要买东西,我要求是2012-07-25日到货,假设运输需要10天的时间,25日没有到则我不签收了,不支付钱了。假设淘宝上的店家周六周日不上班,不发货,也就是说如果我要25日到货,你需要运输10天,10天前刚好是周末,而周末是不发货的,那么就要提前发货,运输时间可能只要1天,可能是2天,也可能是半个月,请你写一个SQL的存储过程查询提前到那一天发货好呢?
  我是这样的做的:
<div class="cnblogs_code">create proc P_GetShipmentsDate@ArriveDate datetime,@Days intas    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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表