SQL Server DATEADD() 函数


定义和用法

DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。


datepart 参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns


number

  是一个表达式,可以解析为与 date 的 datepart 相加的 int。用户定义的变量是有效的。

  如果您指定一个带小数的值,则将小数截去且不进行舍入。


date

  是一个表达式,可以解析为 time、date、smalldatetime、datetime、datetime2 或 datetimeoffset 值。date 可以是表达式、列表达式、用户定义的变量或字符串文字。如果表达式是字符串文字,则它必须解析为一个 datetime 值。为避免不确定性,请使用四位数年份。


返回类型

  字符串文字的返回数据类型为 datetime。如果字符串文字的秒数小数位数超过三位 (.nnn) 或包含时区偏移量部分,将引发错误。


返回值

 datepart 参数

  dayofyearday 和 weekday 返回相同的值。

  每个 datepart 及其缩写都返回相同的值。

  如果 datepart 为 month 且 date 月份(八月份)比返回月份(九月份)的天数多,因而 date 中的日在返回月份中不存在(九月份的31号),则返回返回月份的最后一天。例如,9 月份有 30 天;因此,下面两个语句返回 2006-09-30 00:00:00.000:

 

   
   
   
   
SELECT DATEADD ( month , 1 , ' 2006-08-30 ' )
SELECT DATEADD ( month , 1 , ' 2006-08-31 ' )

 

number 参数

   number 参数不能超出  int 的范围。在下面的语句中, number 的参数超出  int 范围 1。将返回如下错误消息:“将表达式转换为数据类型 int 时出现算术溢出错误。”
    
    
    
    
SELECT DATEADD ( year , 2147483648 , ' 2006-07-31 ' );
SELECT DATEADD ( year , - 2147483649 , ' 2006-07-31 ' );

 

date 参数

   date 参数不能增加至其数据范围之外的值。在下面的语句中,与  date 值相加的  number 值超出了  date 数据类型的范围。将返回如下错误消息:“将值添加到 'datetime' 列导致溢出。”
    
    
    
    
SELECT DATEADD ( year , 2147483647 , ' 2006-07-31 ' );
SELECT DATEADD ( year , - 2147483647 , ' 2006-07-31 ' );

你可能感兴趣的:(SQL Server DATEADD() 函数)