sybase函数用法之DateAdd

来源:互联网 发布:国外旅游景点推荐 知乎 编辑:程序博客网 时间:2024/06/05 06:40
 

弄几个例子:

测试环境: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 中的年份),就会导致错误发生。