SQL DATEADD函数 (sqlserver 只更新表中年份,不改其他时间)
公司需要我更新下表中的时间,只是更新年份,其他不改,数据有几千条,肯定不可能手动更新了。。。。
所以我查了一下 有了这个方案:
update dbo.Dev_File set Factory_date=DATEADD(year,2, Factory_date);
update dbo.Dev_File set Install_date=DATEADD(year,2, Install_date);
update dbo.Dev_File set check_date=DATEADD(year,2,check_date);
以下是资料:
SQL DATEADD函数
将指定number时间间隔(有符号整数)与指定date的指定datepart相加后,返回该date。
参数
datepart
是与number相加的date部分。下表列出了所有有效的datepart参数。用户定义的变量等效项是无效的。
number
是一个表达式,可以解析为与date的datepart相加的int。用户定义的变量是有效的。
如果您指定一个带小数的值,则将小数截去且不进行舍入。
date
是一个表达式,可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值。date可以是表达式、列表达式、用户定义的变量或字符串文字。如果表达式是字符串文字,则它必须解析为一个datetime值。为避免不确定性,请使用四位数年份。
返回类型
字符串文字的返回数据类型为datetime。如果字符串文字的秒数小数位数超过三位 (.nnn) 或包含时区偏移量部分,将引发错误。
返回值
datepart 参数
dayofyear、day和weekday返回相同的值。
每个datepart及其缩写都返回相同的值。
如果datepart为month且date月份(八月份)比返回月份(九月份)的天数多,因而date中的日在返回月份中不存在(九月份的31号),则返回返回月份的最后一天。例如,9 月份有 30 天;因此,下面两个语句返回 2006-09-30 00:00:00.000:
SELECT DATEADD(month, 1, '2006-08-31')
number 参数
SELECT DATEADD(year,-2147483649, '2006-07-31');
date 参数
SELECT DATEADD(year,-2147483647, '2006-07-31');