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

解决方案 »

  1.   

    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.32select * 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*/