我如果想更新月份呢?比如把3月全部更新成8月为什么不查帮助呢? update t set dataTest = dateadd(mm,+5,dataTest) where month(datatest) = 3
update t set dateTest = dateadd(yy,-1,dateTest) where year(dateTest)=2005
to:libin_ftsafe(子陌红尘)我如果想更新月份呢?比如把3月全部更新成8月 ================ update t set dateTest = dateadd(mm,5,dateTest) where month(dateTest)=3
你看下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)
1、update t set dateTest = dateadd(yy,-1,dateTest) where year(dateTest) = 20052、update t set dataTest = dateadd(mm,5 ,dataTest) where month(dateTest) = 3
1、update t set dateTest = dateadd(yy,-1,dateTest) where year(dateTest) = 20052、update t set dataTest = dateadd(mm,5 ,dataTest) where month(dateTest) = 3
--更新年份为任意一年 declare @year int set @year=2004 update 表 set 日期=dateadd(year,@year-year(getdate()),getdate()) --更新年份为任意一月 declare @month int set @month=10 update 表 set 日期=dateadd(year,@month-month(getdate()),getdate()) --更新年份为任意一表 declare @day int set @day=22 update 表 set 日期=dateadd(year,@day-day(getdate()),getdate())
更新年: update t set dateTest = dateadd(yy,-1,dateTest) 更新月: update t set dateTest = dateadd(mm,-1,dateTest) 更新日: update t set dateTest = dateadd(dd,-1,dateTest)
update t set dataTest = dateadd(mm,+5,dataTest)
where month(datatest) = 3
================
update t
set dateTest = dateadd(mm,5,dateTest)
where month(dateTest)=3
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)
set dateTest = dateadd(yy,-1,dateTest)
where year(dateTest) = 20052、update t
set dataTest = dateadd(mm,5 ,dataTest)
where month(dateTest) = 3
declare @year int
set @year=2004
update 表 set 日期=dateadd(year,@year-year(getdate()),getdate())
--更新年份为任意一月
declare @month int
set @month=10
update 表 set 日期=dateadd(year,@month-month(getdate()),getdate())
--更新年份为任意一表
declare @day int
set @day=22
update 表 set 日期=dateadd(year,@day-day(getdate()),getdate())
update t set dateTest = dateadd(yy,-1,dateTest)
更新月:
update t set dateTest = dateadd(mm,-1,dateTest)
更新日:
update t set dateTest = dateadd(dd,-1,dateTest)