SET DATEFORMAT
设置用于输入 datetime 或 smalldatetime 数据的日期部分(月/日/年)的顺序。 语法
SET DATEFORMAT { format | @format_var } 参数
format | @format_var是日期部分的顺序。可以是 Unicode 或转换为 Unicode 的 DBCS。有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。美国英语默认值是 mdy。注释
该设置仅用在将字符串转换为日期值时的解释中。它对日期值的显示没有影响。SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。权限
SET DATEFORMAT 权限默认授予所有用户。示例
下例使用不同的日期格式处理不同格式的日期字符串。SET DATEFORMAT mdy
GO
DECLARE @datevar datetime
SET @datevar = '12/31/98'
SELECT @datevar
GOSET DATEFORMAT ydm
GO
DECLARE @datevar datetime
SET @datevar = '98/31/12'
SELECT @datevar
GOSET DATEFORMAT ymd
GO
DECLARE @datevar datetime
SET @datevar = '98/12/31'
SELECT @datevar
GO

解决方案 »

  1.   

    DATEDIFF
    返回跨两个指定日期的日期和时间边界数
    语法
    DATEDIFF ( datepart , startdate , enddate )
    datepart是规定了应在日期的哪一部分计算差额的参数。可是是下列所示的缩写:日期部分 缩写 
    year     yy, yyyy 
    quarter  qq, q 
    Month    mm, m 
    dayofyeardy, y 
    Day      dd, d 
    Week     wk, ww 
    Hour     hh 
    minute   mi, n 
    second   ss, s 
    millisecond ms 
    如:datediff(dd,'2001/10/21', '2001/10/31')//求21日到31日之间的日期,返回值为int类型。用format(date,yyyy/mm/dd hh/mm/ss)或者,把操作系统的日期格式设为年/月/日 时/分/秒就可以了。
      

  2.   

    SET DATEFORMAT ymd
    GO
    print datediff(d,2002/02/01,2002/03/01)
    go
    为什么显示为-334?