MSSQL的sql语句Dateadd()的问题

selectdateadd(mm,0,12)selectdateadd(yy,0,12)为什么这两个的返回结果是一样的?... select dateadd(mm,0,12)
select dateadd(yy,0,12)
为什么这两个的返回结果是一样的?
展开
 我来答
吾秋厹06Q
2009-07-01
知道答主
回答量:18
采纳率:0%
帮助的人:24.3万
展开全部
1.首先你的参数格式不对!
表达式 DateAdd(timeinterval,number,date)
第三个参数应该是一个日期值,如 2009-07-01 18:01:43.630

2.你的第二个参数是0,
这样,无论第一个参数是什么都不起作用,最后结果都是第三个参数,
如果第三个参数(你写的12)一样,那么他们的返回结果当然也是一样的!
yhb8618
2009-07-01
知道答主
回答量:26
采纳率:0%
帮助的人:18.6万
展开全部
因为你最后的参数不对,不能是日期型的。

DateAdd() DateAdd()
返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。
表达式 DateAdd(timeinterval,number,date)
描述
interval必要。字符串表达式,是所要加上去的时间间隔。
number必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。
设置 interval 参数,具有以下设定值:
设置 描述
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 毫秒
说明
可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。
为了对 date 加上“日”,可以使用“一年的日数” (“y”),“日” (”d”) 或“一周的日数” (”w”)。
DateAdd 函数将不返回有效日期。在以下实例中将 1 月31 日加上一个月:
DateAdd(m, 1, 31-Jan-95)
上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。如果 date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2 月 29 日。
如果计算的日期超前 100 年(减去的年度超过 date 中的年份),就会导致错误发生。
如果 number 不是一个 Long 值,则在计算时取最接近的整数值来计算。
注意 DateAdd 返回值的格式由 Control Panel设置决定,而不是由传递到date 参数的格式决定。
附:
number
是用来增加 datepart 的值。数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为 >date 以后的日期),负值表示减(结果为 >date 以前的日期)。
如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 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)
MYSQL上应用实例:
select * from format where add_date >="dateadd('dd',-1,'2008-05-19')"
取出2008年5月18日以后的所有数据。
ACCESS上应用实例:
select * from format where add_date >=dateadd('d',1,#2008/05/19#)
取出2008年5月20日以后的所有数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
roy_88
2009-07-01 · TA获得超过3696个赞
知道大有可为答主
回答量:2914
采纳率:100%
帮助的人:2744万
展开全部
select dateadd(yy,0,12)
--0这是加0年

select dateadd(mm,0,12)
--0这是加0月

12隐性转为日期
等同
select cast(12 as datetime)--
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式