弄几个例子:
测试环境:sybase12.5
DateAdd函数 返回一个时间。
语法
DateAdd(interval, number, date)
DateAdd 函数语法中有下列命名参数:
部分 描述
interval 必要。字符串表达式,是所要加上去的时间单位。
number 必要。int类型,是要加上的时间的数量。其数值可以为正数(得到未来的时间),也可以为负数(得到过去的时间)。
date 必要。表示时间的文字。
设置
interval 参数具有以下设定值:
year 年
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(year,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(year,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 11:42:30 2009/03/10 11:42:30
(1 row affected)
quarter 季
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(quarter,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(quarter,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 11:44:00 2008/06/10 11:44:00
(1 row affected)
month 月
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(month,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(month,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:27:02 2008/04/10 13:27:02
(1 row affected)
day 日
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(day,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(day,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:28:54 2008/03/11 13:28:54
(1 row affected)
week 周
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(week,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(week,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:30:10 2008/03/17 13:30:10
(1 row affected)
hour 时
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(hour,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(hour,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:31:35 2008/03/10 14:31:35
(1 row affected)
minute 分钟
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(minute,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(minute,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:32:51 2008/03/10 13:33:51
(1 row affected)
second 秒
1> select convert(varchar(10),getdate(),111)+' '
2> +convert(varchar(8),getdate(),108) old,
3> convert(varchar(10),dateadd(second,1,getdate()),111)+' '
4> +convert(varchar(8),dateadd(second,1,getdate()),108) new
5> go
old new
------------------- -------------------
2008/03/10 13:34:02 2008/03/10 13:34:03
(1 row affected)
说明
可以使用 DateAdd 函数对日期加上或减去指定的时间。例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。
DateAdd 函数遇到闰月。在以下实例中将 1 月31 日加上一个月:
dateadd(month, 1, '31-Jan-95')
1> select dateadd(month, 1, '31-Jan-95')
2> go
--------------------------
Feb 28 1995 12:00AM
(1 row affected)
上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。
如果 date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2 月 29 日。
1> select dateadd(month, 1, '31-Jan-96')
2> go
--------------------------
Feb 29 1996 12:00AM
(1 row affected)
如果计算的日期超前 255 年(减去的年度超过 date 中的年份),就会导致错误发生。