sqlserver 两个数值字段相加_sqlserver 如何实现整数格式的时间字段的相加?

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 编辑]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值