求救呀? 如果SELECT (2003-11-12+5)这样就出现以下错:将 varchar 值 '2003-10-11' 转换为数据类型为 int 的列时发生语法错误。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select dateadd(month,-24,'2002-12-14')---------------------^^^减select dateadd(day,-24,'2002-12-14')----------------^^^天或year年 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 pubsGOSELECT DATEADD(day, 21, pubdate) AS timeframeFROM titlesGO下面是结果集: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) SELECT dateadd(day,5,'2003-11-12') select cast('2003.11.30' as datetime)+5select dateadd(day,5,'2003.11.30') ------------------------------------------------------ 2003-12-05 00:00:00.000(所影响的行数为 1 行) ------------------------------------------------------ 2003-12-05 00:00:00.000(所影响的行数为 1 行) SELECT (2003-11-12+5)上面是做为数字计算的.2003-11-12没有做为日期计算SELECT cast('2003-11-12' as datetime)+5 对日期字段操作最好用日期的相关函数,SQL中用显式和隐式的类型转换,如2003-11-25你自己知道是一个日期,但是如果写成2003-11-25+5,则SQL会把他当成数值运算了,所以结果不对,建议如果若干个运算值的类型不一致,最好都显式的转换成相关的类型,不要在意多敲几个字符,那样的代码在可读性上会高很多! 日期加上5天select dateadd(dd,5,convert(datetime,'2003.11.20'))月份加上5个月select dateadd(mm,5,convert(datetime,'2003.11.20')) select dateadd(day,5,'2003-11-20')其中day还有其他形式: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 怎样删除这样的记录 有关数据类型转换的问题 请教一个sql语句 如何处理循环调用,循环导入表格,并把表格连在一起 一个困扰很久的SQL 查询问题,求大神 SQL2005中修改数据报错 一个我感觉比较复杂的问题 sql语句 求一用户管理的方案 有关数据库复制权限的问题-(在线等待) SQL Server中服务器中的服务干什么用的? 怎样在一个存储过程中调用另外一个存储过程的变量!!!
---------------------^^^减
select dateadd(day,-24,'2002-12-14')
----------------^^^天或year年
在向指定日期加上一段时间的基础上,返回新的 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)
select dateadd(day,5,'2003.11.30')
------------------------------------------------------
2003-12-05 00:00:00.000(所影响的行数为 1 行)
------------------------------------------------------
2003-12-05 00:00:00.000(所影响的行数为 1 行)
上面是做为数字计算的.2003-11-12没有做为日期计算SELECT cast('2003-11-12' as datetime)+5
select dateadd(dd,5,convert(datetime,'2003.11.20'))月份加上5个月
select dateadd(mm,5,convert(datetime,'2003.11.20'))
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