首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

字符型时间计算,该怎么解决

2012-02-03 
字符型时间计算有两个表时间字段是nvarchar类型的,现在需对两个进行时间对比表结构如下时间1时间209:0310:

字符型时间计算
有两个表时间字段是nvarchar类型的,现在需对两个进行时间对比
表结构如下
        时间1       时间2
        09:03       10:50      
        08:00       17:00

结果如下
        时间1       时间2       时间长
        09:03       10:50       01:47
        08:00       17:00       09:00

不知道用什么函数能进行数据转换?

[解决办法]
declare @a table(a nvarchar(20),b nvarchar(20),c nvarchar(20))
insert @a select '09:03 ', '10:50 ',null
union all select '08:00 ', '17:00 ',null
select a,b,c=right(100+datediff(hour,cast(a as datetime),cast(b as datetime)),2)+ ': '+
right(100+datediff(minute,cast(a as datetime),cast(b as datetime)) %60,2)
from @a
[解决办法]
declare @a table( 时间1 nvarchar(20),时间2 nvarchar(20))
insert @a select '09:03 ', '10:50 '
union all select '08:00 ', '17:00 '
union all select '08:00 ', '17:06 '
union all select '08:90 ', '17:06 '
union all select '08:00 ', '1706 '

select * from @a where isdate(时间1)> 0

select 时间1, 时间2 , right(100+datediff(Hour,时间1,时间2),2)+ ': '+right(100+ datediff(minute,时间1,时间2)%60,2) as 时间长 from @a

where isdate(时间1) > 0 and isdate(时间2) > 0

时间1 时间2 时间长
09:0310:5001:47
08:0017:0009:00
08:0017:0609:06

[解决办法]
declare @a varchar(100),@b varchar(100)
select @a= '9:3 ',@b= '10:50 '


select cast((datediff(minute,cast (@a as datetime),cast (@b as datetime)))/60 as varchar) + ': '+cast((datediff(minute,cast (@a as datetime),cast (@b as datetime))) % 60 as varchar)


---------------------------
1:47

(所影响的行数为 1 行)

[解决办法]
declare @a table( 时间1 nvarchar(20),时间2 nvarchar(20),时间长 nvarchar(20))
insert @a select '09:03 ', '10:50 ', ' '
union all select '08:00 ', '17:00 ', ' '
union all select '08:00 ', '17:06 ', ' '
union all select '08:05 ', '17:06 ', ' '

select 时间1,时间2,abs(datediff(mi, (convert(varchar(10),getdate(),120) + ' '+ 时间1+ ':00 '),
(convert(varchar(10),getdate(),120) + ' '+ 时间2+ ':00 '))) 时间长 from @a

------------------------------------------------
时间1 时间2 时间长
09:0310:50107
08:0017:00540
08:0017:06546
08:0517:06541

热点排行