sql查询日期时间问题

如表test:abcde12008-1-117:202008-1-218:1022008-2-117:302008-2-314:2032008-6-217:102008-... 如表test:
a b c d e
1 2008-1-1 17:20 2008-1-2 18:10
2 2008-2-1 17:30 2008-2-3 14:20
3 2008-6-2 17:10 2008-6-3 15:30
4 2008-2-2 17:00 2008-2-4 14:30

根据组合(B与C) ,(D与E )两时间差计算 ,例如第一条 2008-1-1 17:20与 2008-1-2 18:10 这两个时差计算,精确到半小时,不足半小时按小时计算!
例1:13:20 到 14:50 ,相差时间为1.5小时
例2: 12:50 到17:00 ,相差时间约为4.16小时 ,但显示为4.5小时!
例3: 13:10到 14:50 ,相差时间约为1.67小时,但显示为2.0小时!
请问大神们该怎么做啊
展开
 我来答
Ourde
2013-06-26 · TA获得超过271个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:135万
展开全部
应该是这样写的吧:
SELECT CASE WHEN W.[Time2] = 0 THEN W.[Time1]
WHEN W.[Time2] > 0 AND W.[Time2] <= 0.5 THEN W.[Time1] + 0.5
ELSE W.[Time1] + 1 END AS [Time]
FROM (
SELECT CAST(CAST(DATEDIFF(minute, W.[Date1], W.[Date2]) AS DECIMAL(18, 2))/60 AS INT) AS [Time1]
,CAST(DATEDIFF(minute, W.[Date1], W.[Date2]) AS DECIMAL(18, 2))/60 - CAST(CAST(DATEDIFF(minute, W.[Date1], W.[Date2]) AS DECIMAL(18, 2))/60 AS INT) AS [Time2]
FROM (
SELECT CAST(b + ' ' + c AS DATETIME) AS [Date1]
,CAST(d + ' ' + e AS DATETIME) AS [Date2]
) W
) W
由于时间匆忙,我没有测试,请验证!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
17号观察室
2013-06-26 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1341万
展开全部
--楼主可以分为两步骤:
--第一步先把差额算出了
with tbname as
(select a,b+c,d+e de from test)
select a,datediff(mi,bc,de)/60.0 hs into #temp from tbname
--第二步 再判断
if (select right(hs,1) from #temp)>5
begin
update #temp set hs=round(hs,0) where right(hs,1)>5
end
else if (select right(hs,1) from #temp)<=5 and (select right(hs,1) from #temp)>0
begin
update #temp set hs=left(hs,len(hs)-2)+0.5 where right(hs,1)<=5 and right(hs,1)>0
end
--不明白可以随时问我 希望采纳 脚本一起执行 最后可以执行下面语句查看
select * from #temp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2dca20d
推荐于2017-08-19 · TA获得超过4036个赞
知道大有可为答主
回答量:2638
采纳率:77%
帮助的人:1011万
展开全部
select *,FLOOR(datediff(MINUTE,b+' '+c,d+' '+e)/60.0+0.5) from T
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weidongzzz
2013-06-26 · TA获得超过1430个赞
知道小有建树答主
回答量:869
采纳率:25%
帮助的人:631万
展开全部
楼主,你好!在回答你的问题之前,我想确定一些信息。句子“精确到半小时,不足半小时按小时计算”这句话怎么来理解?
更多追问追答
追问
例如17:10  那么显示就是17:30
17:40 那么现实就是18:00
追答
按你的话来理解,不足半小时按小时算,那么17:10就应该算成18:00
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahua0597
2017-08-16 · TA获得超过107个赞
知道小有建树答主
回答量:303
采纳率:50%
帮助的人:148万
展开全部
(向下取整(时差 + 0.5))-0.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式