select datediff(ss,'2009-06-15 10:18:50',getdate())-datediff(mi,'2009-06-15 10:18:50',getdate())*60
这段代码怎么有时会出现负数?

解决方案 »

  1.   

    DATEDIFF是时间类型,可以这样直接减??
      

  2.   

    select datepart(ss,getdate())这就是求秒呀。
      

  3.   

    select datepart(ss,'2009-06-15 10:18:50')/*
                
    ----------- 
    50(所影响的行数为 1 行)*/
      

  4.   

    但select datediff 出来是整数  
      

  5.   


    当然了。
    我们来举个例子
    select datediff(mi,'2009-06-16 16:48:20','2009-06-16 16:49:10')
    结果是1
    但是他们实际上根本吃差50秒。那么你用50-1×60当然是负数了。
      

  6.   

    问题是这样:有两个时间  timestart timeend
    timeend 始终比 timestart 晚想实现两个时间相差几分钟,相差几秒
      

  7.   

    SELECT DATEADD(ss,50,'2009-06-16 16:48:20')/*
    2009-06-16 16:49:10.000
    */
      

  8.   

    贴子没说清楚其实问题是这样的
    有两个时间  timestart timeend timeend 始终比 timestart 晚 想实现两个时间相差几分钟,相差几秒 
     分钟     秒
      10      20
      

  9.   


    select CONVERT(VARCHAR(20),DATEADD(SS,datediff(ss,'2009-06-16 22:18:50',getdate()),0),108)
    查询用时
                         
    -------------------- 
    00:14:40(所影响的行数为 1 行)