帮忙看下这两个句子有啥问题?? select datediff(dd,'1983-04-26',getdate())select datediff(mm,'1983-04-26',getdate())/*----------- 9579(所影响的行数为 1 行) ----------- 315(所影响的行数为 1 行)*/ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没看出有什么问题~datediff()是比较两个指定时间的间隔的;select datediff(dd,'1983-04-26',getdate())是83年与系统获得当前时间的比较,单位是天;select datediff(mm,'1983-04-26',getdate())是83年与系统获得当前时间的比较,单位是月;时分秒都应该被忽略掉了 我发觉把后面的getdate()改成具体的日期,答案就对了。就是用getdate()时,出现这样的答案。而且答案还是固定的,但是也跟正确值差得太远了吧。 千年虫其实就是“千年重”,重复的“重”。具体定义看,百度的这个:http://baike.baidu.com/view/9349.htm --我都写成这样了 还是你那个结果 select datediff(day,convert(varchar(10),'1983-04-26',120),convert(varchar(10),getdate(),120)) select datediff(day,convert(varchar(10),'1983-04-26',120),convert(varchar(10),getdate(),120)) 你把win2000和sql2000的补丁都打到SP4版本就可以解决了 这样 select datediff(dd,'1983-04-26','2009-07-17') select datediff(mm,'1983-04-26','2009-07-17')答案是: 9579 315如果是这样:select datediff(dd,'2009-07-26','2009-07-17')select datediff(mm,'2009-04-26','2009-07-17')答案是:-9 3.楼主是不是想要得到天与天的差值和月与月的差值? 原来是这么理解的,但是当年份不同时,这个函数就不能给出天与天和月与月的差值。==========照給!!1年=12月select datediff(month, '2008-7-17','2009-7-1')/*12*/ 不会。建议楼主再好好学习datediff这个函数。楼主是没有搞明白datediff这个函数是干什么用的。自已在那里想当然。呵呵。 select datediff(dd,'2008-12-31','2009-01-01')--相差天数select datediff(yy,'2008-12-31','2009-01-01')--相差月 忽略天select datediff(mm,'2008-12-31','2009-01-01')--相差年 忽略月 天--结果都是1 我开始的理解是这样的:datediff(xx,'y1-m1-d1','y2-m2-d2')如果xx是dd的话,就只比较d1和d2的差值;如果xx是mm的话,就只比较m1和m2的差值;如果xx是yy的话,就只比较y1和y2的差值;现在想来理解确实错了。 DECLARE @SDATE DATETIME,@EDATE DATETIMESELECT @SDATE='2009-1-9',@EDATE='2009-6-7'SELECT @SDATE '起始时间',@EDATE '结束时间',CAST(CASE WHEN DAY(@EDATE)>=DAY(@SDATE)THEN DATEDIFF(MONTH,@SDATE,@EDATE)ELSE DATEDIFF(MONTH,@SDATE,@EDATE)-1END AS VARCHAR(20))+'个月'+CAST(DATEDIFF(DAY,DATEADD(MONTH,CASE WHEN DAY(@EDATE)>=DAY(@SDATE)THEN DATEDIFF(MONTH,@SDATE,@EDATE)ELSE DATEDIFF(MONTH,@SDATE,@EDATE)-1END,@SDATE),@EDATE) AS VARCHAR(20))+'天' '相隔时间'/*起始时间 结束时间 相隔时间2009-01-09 00:00:00.000 2009-06-07 00:00:00.000 4个月29天*/ SQL Server 2008 安装时老提示 重新启动计算机 失效,重起了N次都不起作用,怎么解决? 统计占比例的问题,请帮忙... 要保持两台服务器上的某个数据库内容完全一致,有什么好的办法? SQL 存储过程的加密保护 求一sql语句。 什么是数据库概念模型,模式设计? 是不是该生成一个表? 如何清空数据库的日志? 百分求解!!!!!!(给个思路也好呀) 对于异构数据库的设计问题 关于函数 如何用一条SQL语句将一个字段变成两个?
datediff()是比较两个指定时间的间隔的;
select datediff(dd,'1983-04-26',getdate())是83年与系统获得当前时间的比较,单位是天;
select datediff(mm,'1983-04-26',getdate())是83年与系统获得当前时间的比较,单位是月;时分秒都应该被忽略掉了
而且答案还是固定的,但是也跟正确值差得太远了吧。
具体定义看,百度的这个:
http://baike.baidu.com/view/9349.htm
select datediff(day,convert(varchar(10),'1983-04-26',120),convert(varchar(10),getdate(),120))
convert(varchar(10),'1983-04-26',120),
convert(varchar(10),getdate(),120))
你把win2000和sql2000的补丁都打到SP4版本就可以解决了
答案是: 9579 315
如果是这样:
select datediff(dd,'2009-07-26','2009-07-17')select datediff(mm,'2009-04-26','2009-07-17')答案是:-9 3.
楼主是不是想要得到天与天的差值和月与月的差值?
==========照給!!1年=12月
select datediff(month, '2008-7-17','2009-7-1')/*
12
*/
--相差天数
select datediff(yy,'2008-12-31','2009-01-01')
--相差月 忽略天
select datediff(mm,'2008-12-31','2009-01-01')
--相差年 忽略月 天
--结果都是1
datediff(xx,'y1-m1-d1','y2-m2-d2')
如果xx是dd的话,就只比较d1和d2的差值;
如果xx是mm的话,就只比较m1和m2的差值;
如果xx是yy的话,就只比较y1和y2的差值;
现在想来理解确实错了。
DECLARE @SDATE DATETIME,@EDATE DATETIME
SELECT @SDATE='2009-1-9',@EDATE='2009-6-7'
SELECT @SDATE '起始时间',@EDATE '结束时间',CAST(CASE WHEN DAY(@EDATE)>=DAY(@SDATE)
THEN DATEDIFF(MONTH,@SDATE,@EDATE)
ELSE DATEDIFF(MONTH,@SDATE,@EDATE)-1
END AS VARCHAR(20))+'个月'
+CAST(DATEDIFF(DAY,DATEADD(MONTH,CASE WHEN DAY(@EDATE)>=DAY(@SDATE)
THEN DATEDIFF(MONTH,@SDATE,@EDATE)
ELSE DATEDIFF(MONTH,@SDATE,@EDATE)-1
END,@SDATE),@EDATE) AS VARCHAR(20))+'天' '相隔时间'/*
起始时间 结束时间 相隔时间
2009-01-09 00:00:00.000 2009-06-07 00:00:00.000 4个月29天
*/