http://www.w3school.com.cn/sql/func_dateadd.asp
只能把那个时间依次分解。
如果time 是6位 直接2位 2位 2位的取 分别为 小时 分钟 秒
如果time 是5位 直接1位 2位 2位的取 分别为 小时 分钟 秒
如果time 是4位 直接2位 2位取 分别为 分钟 秒
如果time 是3位 直接1位 2位取 分别为 分钟 秒
例如
declare @mytime datetime;
set @mytime=DATEADD(hour, 5, GETDATE())
select @mytime
set @mytime=DATEADD(minute , 5, @mytime)
select @mytime
set @mytime=DATEADD(second , 55, @mytime)
select @mytime
如果有一个通用函数就好了 有时间写个
declare @mytime datetime;
declare @a int;
declare @length int;
declare @localhour int;
declare @localmin int;
declare @localsec int;
set @localhour =0;
set @localmin =0;
set @localsec =0;
set @a=125;
set @length=LEN(@a);
if(LEN(@a)=6)
begin
set @localhour=LEFT(@a,2);
set @localmin=SUBSTRING(cast(@a as CHAR(6)),3,2)
set @localsec=right(@a,2);
end
else if(LEN(@a)=5)
begin
set @localhour=LEFT(@a,1);
set @localmin=SUBSTRING(cast(@a as CHAR(6)),2,2)
set @localsec=right(@a,2);
end
else if(LEN(@a)=4)
begin
set @localmin=LEFT(@a,2);
set @localsec=right(@a,2);
end
else if(LEN(@a)=3)
begin
set @localmin=LEFT(@a,1);
set @localsec=right(@a,2);
end
else
set @localsec=@a;
set @mytime=DATEADD(hour, @localhour, GETDATE())
select @mytime
set @mytime=DATEADD(minute , @localmin, @mytime)
select @mytime
set @mytime=DATEADD(second , @localsec, @mytime)
select @mytime
在向指定日期加上一段时间的基础上,返回新的 datetime 值。
语法
DATEADD ( datepart , number, date )
参数
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
number
是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。
date
是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
返回类型
返回 datetime,但如果 date 参数是 smalldatetime,返回 smalldatetime。
示例
此示例打印出 pubs 数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21 天。
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
下面是结果集:
timeframe
---------------------------
Jul 3 1991 12:00AM
Jun 30 1991 12:00AM
Jul 21 1991 12:00AM
Jul 13 1991 12:00AM
Jun 30 1991 12:00AM
Jul 9 1991 12:00AM
Mar 14 1997 5:09PM
Jul 21 1991 12:00AM
Jul 3 1994 12:00AM
Mar 14 1997 5:09PM
Nov 11 1991 12:00AM
Jul 6 1991 12:00AM
Oct 26 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
Nov 11 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
(18 row(s) affected)
DATEADD ( datepart , number, date ),理解为,date是一个日期对象,要在date上增加时间,datepart表示
需要在那部分添加(如:Year,Day,hour等),number添加的数量。
例子:
DATEADD ( Year , 2, 1991-06-12 00:00:00.000) 在年(1991年)上增加2,则返回值为1993-06-12 00:00:00.000
DATEADD ( Day, 2, 1991-06-12 00:00:00.000) 在日(12号)上增加2,则返回值为1991-06-14 00:00:00.000
DATEADD ( Hour, 2, 1991-06-12 00:00:00.000) 在小时(00小时)上增加2,则返回值为1991-06-12 02:00:00.000
[本帖最后由 liyihongcug 于 2011-8-26 20:53 编辑]