SQL 日期相减问题

zhzhl202 2008-11-22 08:35:29
我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间 (这四个字段都是varchar类型)

例如:某一条记录: 1 16:00 2 12:20

我的目的就是用 select(到达天数+到达时间)-(开始天数+开始时间) as 花费时间 from table

例如上条记录得到的就是 (2*24:00+12:20)-(24:00+16:00)=20:00

这样的SQL语句该怎么写???

QQ:421525432
...全文
1378 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
claro 2008-11-22
  • 打赏
  • 举报
回复
帮顶
-狙击手- 2008-11-22
  • 打赏
  • 举报
回复
declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))
insert @t select '1', '16:00','2','12:20'

--如果开始天数,到达天数大于31
select 到达天数 * 24 + datepart(hh,到达时间) - 开始天数 * 24 - datepart(hh,开始时间)
from @t
/*
-----------
20

(1 行受影响)
*/
-狙击手- 2008-11-22
  • 打赏
  • 举报
回复
declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))
insert @t select '1', '16:00','2','12:20'

select datediff(hh,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
from @t

/*
-----------
20

(1 行受影响)
*/
青锋-SS 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhzhl202 的回复:]
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
[/Quote]

--上面没注意,放错地方了
select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
from tb
csdyyr 2008-11-22
  • 打赏
  • 举报
回复
declare @tb table(startday varchar(2), starttime varchar(5), endday varchar(2), endtime varchar(5))
insert @tb
select '1', '16:00', '2', '12:20'

select convert(varchar(5),enddate-startdate,108)
from (
select cast('2008-11-'+startday+' '+starttime as datetime) as startdate,
cast('2008-11-'+endday+' '+endtime as datetime) as enddate
from @tb
) t
/*
20:20
*/
  • 打赏
  • 举报
回复
(2*24:00+12:20)-(24:00+16:00)=20:00

后面的分钟还要不要
zhzhl202 2008-11-22
  • 打赏
  • 举报
回复
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
青锋-SS 2008-11-22
  • 打赏
  • 举报
回复

select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+rtrim(到达天数)+到达时间)
from tb
青锋-SS 2008-11-22
  • 打赏
  • 举报
回复
select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+到达天数+到达时间)

22,207

社区成员

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

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