SQL 日期相减问题 我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间 (这四个字段都是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 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+到达天数+到达时间) select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+' '+rtrim(到达天数)+到达时间)from tb 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。 declare @tb table(startday varchar(2), starttime varchar(5), endday varchar(2), endtime varchar(5))insert @tbselect '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 enddatefrom @tb) t/*20:20*/ --上面没注意,放错地方了select datediff(n,'2008-10-'+rtrim(开始天数)+' '+开始时间,'2008-10-'+rtrim(到达天数)+' '+到达时间)from tb 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 行受影响)*/ declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))insert @t select '1', '16:00','2','12:20'--如果开始天数,到达天数大于31select 到达天数 * 24 + datepart(hh,到达时间) - 开始天数 * 24 - datepart(hh,开始时间)from @t/*-----------20(1 行受影响)*/ SQL语句跪求。。。。 SELECT INTO 语句不能包含向变量赋值的 SELECT 语句 求解决 SQL Server的数据文件的"Date Modified"属性怎么不变啊? 如何在select语句中把smalltime转化为vchar 几个小问题 业余时间找私活请到河北项目网。信息绝对真实 解释一下sql代码 求查詢語句 存储过程中更新数据表名可否用参数传入或过程中获得~`` 学习sql server哪本书好,高手们推荐一下。谢谢了! 修改创建存储过程错误 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 行受影响)
*/