我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间 (这四个字段都是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
解决方案 »
- provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接
- 有拆分字符串的好办法么?
- 关于视图的一个问题,急用。。在线等!!!
- 05年和04年数据各一条,我怎样获取对应字段的差值?
- 关于一个sqlserver服务的问题
- 66分急求sql语句(在线等待,谢谢)
- 安装FOXPRO 2.5B
- 急!急!在线等待:我的数据库所以记录才1万条,为何它的两个数据库文件大小有10G?
- SQL中如何写个程序动态分析表中某个字段是否持续n天递增或递增--非常具有挑战性
- 报表服务如何添加时间控件
- 修改创建存储过程错误
- sql server 2000 死都装不上去,帮忙看看sqlstp.log,问题在哪里?
select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+rtrim(到达天数)+到达时间)
from tb
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
*/
--上面没注意,放错地方了
select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
from tb
insert @t select '1', '16:00','2','12:20'select datediff(hh,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)
from @t
/*
-----------
20(1 行受影响)
*/
insert @t select '1', '16:00','2','12:20'--如果开始天数,到达天数大于31
select 到达天数 * 24 + datepart(hh,到达时间) - 开始天数 * 24 - datepart(hh,开始时间)
from @t
/*
-----------
20(1 行受影响)
*/