DATEDIFF
返回跨两个指定日期的日期和时间边界数。 语法
DATEDIFF ( datepart , startdate , enddate ) 参数
datepart是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 
year yy, yyyy 
quarter qq, q 
Month mm, m 
dayofyear dy, y 
Day dd, d 
Week wk, ww 
Hour hh 
minute mi, n 
second ss, s 
millisecond ms 
startdate是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。 因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。 enddate是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。返回类型
integer

解决方案 »

  1.   

    可是datediff只能返回以某个单位的返回整型数值,而我要的是将整型变成'12:04:54'这样的字符串
      

  2.   

    只要字段的类型是datetime
    sql server可以自动帮你转换的啊select (sj-'1999-01-01 01:02:03') as sj from test1903-01-01 22:57:57.000
    1903-01-01 22:57:57.000
    1903-01-01 22:57:57.000
    1903-02-01 22:57:57.000
    1903-02-01 22:57:57.000
      

  3.   

    convert(smalldatetime,字段)
    把整型转换成日期型select convert(smalldatetime,10)1900-01-11 00:00:00
      

  4.   

    请问datediff(day,'2001-01-01','2002-08-27')的值是多少?
      

  5.   

    我是这样用的date2,date1
    select ( date2 - date1 ) from evection可是出现如下错误提示:
    将 expression 转换为数据类型 smalldatetime 时发生算术溢出错误。
      

  6.   

    select cast(cast('2002-01-02 00:00:00' as datetime) - cast('2002-01-01 00:00:00' as datetime) as int)
      

  7.   

    因为你得列中有NULL值,SQLSERVER自动填充默认值‘1900-01-01 00:00:00.000’
    试试:
    select date2 - date1 from evection where date1<>'1900-01-01' and date2<>'1900-01-01'
    不过这样得出得结果是以1900-01-01 00:00:00.00 为参考得,你可以这样
    select cast(date2 - date1 as decimal(10,2)) from evection where date1<>'1900-01-01' and date2<>'1900-01-01'
      

  8.   

    用hh:mm:ss的方式表示:
    select right(convert(varchar(19),date2 - date1,120),8) 
    from evection where date1<>'1900-01-01' and date2<>'1900-01-01'
      

  9.   

    supsuccess(口气不小):你的最后一种方法,好办法!我可以得到hh:mm:ss部分了。另外,我还想得到前面相差的具体年数、月数、天数,
    即为相差2月3日12小时34分15秒这样的形式。
    而不是什么1900-03-04 12:34:15的形式。