日期:2014-05-17  浏览次数:20790 次

SQL怎么计算时差
最近从DBF倒了一组数据,原来的程序是用别人VF写的,现在要重新扩展一下,他里的时间倒到SQL后是numeric(7, 2)的这种格式(如5点半就是5.30),因为要计算两列的时差,这种偷懒的做法也可以,但是遇到整点的时候结果是错误的,还有跨天的问题比如下面数据
date1 date2
5.30  9.0
14.55 2.32
这样的数据怎么准确的计算时差

------解决方案--------------------
没有日期没法计算。 
lz这个是要计算同一天的时差吗?

最好给出要求的结果。
------解决方案--------------------
把这里表示的时间全部转换为分钟。
截取整数部分*60+小数部分*100就可以。
隔天的那些整数部分+24小时
------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (date1 numeric(7,2),date2 numeric(7,2))
insert into [TB]
select 5.30,9.0 union all
select 14.55,2.32

select * from [TB]


SELECT  REPLACE(CONVERT(VARCHAR, date1), '.', ':') AS date1 ,
        REPLACE(CONVERT(VARCHAR, date2), '.', ':') AS date2 ,
        DATEDIFF(mi, CONVERT(TIME, REPLACE(CONVERT(VARCHAR, date1), '.', ':')),
                 CONVERT(TIME, REPLACE(CONVERT(VARCHAR, date2), '.', ':'))) AS [date2-date1]
FROM    dbo.TB

/*
date1 date2 date2-date1
5:30 9:00 210
14:55 2:32 -743*/

------解决方案--------------------
不过 没有存储日期的只存时间的,算时差是存在问题的
首先有一个规则,是不是统计的时间记录,而不是当地的时间