急! 在线等待 !SQL语句 如何获取时间差 !

AA 2006-11-24 03:37:14
如题!
select Datediff(y ,recep_time,Getdate()) from vars1 这样读出来的无非就是
单独的 日期 (如:天。月。小时阿 ) 只能得到单独的时间
我想得到一个连贯的时间 如(滞留时间 = 当前时间- 申请时间)
公文标题 滞留时间 提交人
出差申请 10天11小时23分钟 admin
出差申请 16天22小时35分钟 admin
出差申请 16天22小时51分钟 admin
我想出来这样的效果!!!
...全文
1108 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
AA 2006-11-24
  • 打赏
  • 举报
回复
求救 ~~~~!!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
AA 2006-11-24
  • 打赏
  • 举报
回复
Select Distinct work_styleid,work_tablename,porxy_man,blac_id,proxy_endtime ,proxy_starttime ,push,task_name,proxy_id,curtaskid,task_index,table_id,role_id,isdeal,id,work_id,archives_id,work_name ,prears_man,curars_man,recep_time ,ars_owner From vars1 Where (((curars_man = 'admin' and (proxy_id='' or (proxy_starttime >=getdate() or proxy_endtime <=getdate())) and blac_id='C620346Z9VSY1SZ1CB7') or (proxy_id='KsUserC620346Z9VSY1SZ1CB7' and proxy_starttime <=getdate() and proxy_endtime >=getdate())) or (archives_id =(SELECT DISTINCT arsid FROM thead WHERE isdeal = 0 AND arsid = vars1.archives_id AND task_id = vars1.curtaskid AND role_key='KsUserC620346Z9VSY1SZ1CB7') and (blac_id='C620346Z9VSY1SZ1CB7' and (proxy_id='' or (proxy_starttime >=getdate() or proxy_endtime <=getdate())) or (proxy_id='KsUserC620346Z9VSY1SZ1CB7' and proxy_starttime <=getdate() and proxy_endtime >=getdate() )))) order by recep_time desc

这个我以前的 SQL语句。现在想把才大家们帮我搞得SQL语句连成 一个大的SQL语句阿 union
这个语句来 连哦。。 。小弟 语句不行2哦 请大家们 帮哈哦。。。

Select Distinct work_styleid,work_tablename,porxy_man,blac_id,proxy_endtime ,proxy_starttime ,push,task_name,proxy_id,curtaskid,task_index,table_id,role_id,isdeal,id,work_id,archives_id,work_name ,prears_man,curars_man,recep_time ,ars_owner From vars1 Where (((curars_man = 'admin' and (proxy_id='' or (proxy_starttime >=getdate() or proxy_endtime <=getdate())) and blac_id='C620346Z9VSY1SZ1CB7') or (proxy_id='KsUserC620346Z9VSY1SZ1CB7' and proxy_starttime <=getdate() and proxy_endtime >=getdate())) or (archives_id =(SELECT DISTINCT arsid FROM thead WHERE isdeal = 0 AND arsid = vars1.archives_id AND task_id = vars1.curtaskid AND role_key='KsUserC620346Z9VSY1SZ1CB7') and (blac_id='C620346Z9VSY1SZ1CB7' and (proxy_id='' or (proxy_starttime >=getdate() or proxy_endtime <=getdate())) or (proxy_id='KsUserC620346Z9VSY1SZ1CB7' and proxy_starttime <=getdate() and proxy_endtime >=getdate() )))) order by recep_time desc union (select cast(Datediff(day ,recep_time,Getdate()) as varchar) + '天' +
cast(Datediff(hour ,recep_time,Getdate()) % 24 as varchar) + '小时' +
cast(Datediff(minute ,recep_time,Getdate()) % 60 as varchar) + '分钟' as 滞留时间 from vars1)
好像有问题哦。。 应该怎么连哦。 。。 SQL高手们····快帮哈沃阿
AA 2006-11-24
  • 打赏
  • 举报
回复
阿~!!急啊 大哥们。。新的问题出来啦。。。
dulei115 2006-11-24
  • 打赏
  • 举报
回复
直接 datediff(day 不对吧,当时间部分晚于现在时间时结果就错了,例如:

select cast(Datediff(day ,'2006-10-10 17:00',Getdate()) as varchar) + '天' +
cast(Datediff(hour ,'2006-10-10 17:00',Getdate()) % 24 as varchar) + '小时' +
cast(Datediff(minute ,'2006-10-10 17:00',Getdate()) %60 as varchar) + '分钟' as 滞留时间
--45天23小时5分钟

只能是用 datediff(minute 来 / 和 %
AA 2006-11-24
  • 打赏
  • 举报
回复
现在时间是解决拉!!!感谢~!!!!
dawugui 2006-11-24
  • 打赏
  • 举报
回复
对.楼上的,我多做了一步.

select cast(Datediff(day ,'2006-10-10',Getdate()) as varchar) + '天' +
cast(Datediff(hour ,'2006-10-10',Getdate()) % 24 as varchar) + '小时' +
cast(Datediff(minute ,'2006-10-10',Getdate()) %60 as varchar) + '分钟' as 滞留时间

滞留时间
-------------------
45天15小时55分钟

(所影响的行数为 1 行)
playwarcraft 2006-11-24
  • 打赏
  • 举报
回复
小時直接對24取余
分鐘直接對60取余
應該這樣就OK了
playwarcraft 2006-11-24
  • 打赏
  • 举报
回复
declare @t datetime
set @t='2006-10-10'

select convert(varchar(04),datediff(day,@t,getdate()))+'日'+convert(varchar(04),datediff(hour,@t,getdate())%24)+'小時'+convert(varchar(04),datediff(minute,@t,getdate())%60)+'分鐘'

----------------------
45日15小時50分鐘
dulei115 2006-11-24
  • 打赏
  • 举报
回复
if object_id('MyDateDiff') is not null drop function MyDateDiff
go
create function MyDateDiff(@BeginDate datetime, @EndDate datetime)
returns varchar(20)
as
begin
declare @n int,@s varchar(20)
set @n = datediff(minute, @BeginDate, @EndDate)
set @s = cast(@n / 60 / 24 as varchar) + '天'
set @n = @n % (60 * 24)
set @s = @s + cast(@n / 60 as varchar) + '小时'
set @s = @s + cast(@n % 60 as varchar) + '分钟'
return @s
end
go
select dbo.MyDateDiff('2006-11-01 16:00:00', getdate())
--22天23小时50分钟
drop function MyDateDiff
AA 2006-11-24
  • 打赏
  • 举报
回复
我来试试!!!!!!感谢大哥。。。马上给分
dawugui 2006-11-24
  • 打赏
  • 举报
回复
这下可以了.
dawugui 2006-11-24
  • 打赏
  • 举报
回复
select cast(Datediff(day ,'2006-10-10',Getdate()) as varchar) + '天' +
cast(Datediff(hour ,'2006-10-10',Getdate()) % 24 as varchar) + '小时' +
cast(Datediff(minute ,'2006-10-10',Getdate()) % 1440%60 as varchar) + '分钟' as 滞留时间


滞留时间
--------------------------
45天15小时47分钟

(所影响的行数为 1 行)
dawugui 2006-11-24
  • 打赏
  • 举报
回复
分钟那里错了一点,我再看看.
dawugui 2006-11-24
  • 打赏
  • 举报
回复
我我的'2006-10-10'替换为你的recep_time即可.
playwarcraft 2006-11-24
  • 打赏
  • 举报
回复
換言之就是把" xxxx分鐘" 變成" x天x小時x分鐘" ??
dawugui 2006-11-24
  • 打赏
  • 举报
回复
select cast(Datediff(day ,'2006-10-10',Getdate()) as varchar) + '天' as 天,
cast(Datediff(hour ,'2006-10-10',Getdate()) % 24 as varchar) + '小时' as 小时 ,
cast(Datediff(minute ,'2006-10-10',Getdate()) % 1440 as varchar) + '分钟' as 分钟

天 小时 分钟
---- ------ -------
45天 15小时 944分钟

(所影响的行数为 1 行)


select cast(Datediff(day ,'2006-10-10',Getdate()) as varchar) + '天' +
cast(Datediff(hour ,'2006-10-10',Getdate()) % 24 as varchar) + '小时' +
cast(Datediff(minute ,'2006-10-10',Getdate()) % 1440 as varchar) + '分钟' as 滞留时间

滞留时间
-------------------
45天15小时945分钟

(所影响的行数为 1 行)
dulei115 2006-11-24
  • 打赏
  • 举报
回复
那自己写个函数转换

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧