DATEADD的使用

DATEADD
在向指定日期加上一段时间的基础上,返回新的 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)

 

---------------------------------------------------
问题:[求助]求一个一条sql语句操作两条记录的办法,谢谢 ( 积分:100, 回复:7, 阅读:63 )
分类:数据库-文件型 ( 版主:hbezwwl, bubble ) 
来自:himoo, 时间:2006-5-10 17:37:00, ID:3438415 [显示:小字体 | 大字体] 

我有个表例如
ID  A(时间)  B(值)  C
1  200505  1
2  200506  2
3  200507  3
 ......
4  200605  4
5  200606  5
以后一段时间后会追加数据,如:
6  200607  6
字段C是空的,现在我要在每次追加数据后生成C,
本条记录的C等于 本条记录B值 减去 上个月那条记录的B值
(ID号不一定是连续的,时间要考虑到年份问题)

这条sql怎么写呢?谢谢
sql 2000数据库 


来自:haiyuinfo, 时间:2006-5-10 17:52:44, ID:3438452
insert List(a,b,c) values(@a,@b,select @c=c from List where DATEADD(Month,-1,@a)) 


来自:himoo, 时间:2006-5-10 19:17:14, ID:3438518
谢谢您的回答。
另外,还有些实际问题:
1.B字段的数据是从每年1月份开始的,而不算上上一年的数据。这样的话怎么去生成每年1月份的C?
2.如果 某一个月的数据没有怎么办?
比如,所有年份的1月份没有数据

 


来自:haiyuinfo, 时间:2006-5-10 20:06:45, ID:3438550
没有默认为0?
select @c=isnull(c,0) from List where a=DATEADD(Month,-1,@a) and Year(a)=Year(@a)
insert List(a,b,c) values(@a,@b,@c) 
 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值