| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1192 人关注过本帖
标题:应该是很简单的一个题 想了半天没想出来 谁帮忙解决一下
只看楼主 加入收藏
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:11 
应该是很简单的一个题 想了半天没想出来 谁帮忙解决一下
在学生信息表中 根据出生日期  检索每个学生的年龄
搜索更多相关主题的帖子: 出生日期 
2010-04-11 17:57
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:2 
通过计算得到:当前日期年份-出生日期年份
也有人这样做,当前日期与出生日期之间的差值(时间)-->年数

当然,还可以有更精确的方法,不过可能复杂一些

★★★★★为人民服务★★★★★
2010-04-11 20:21
zhangfj2008
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2009-11-2
收藏
得分:2 
就以今年的日期给你个例子吧!

select sname, 2010-birth  as sage
from student
没有测试过,大概就是这样。你可以试试!
2010-04-11 23:04
czyzhuo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:17
帖 子:230
专家分:1459
注 册:2010-3-11
收藏
得分:0 
回复 2楼 cnfarer
请问还有哪些更精确的方法呢?可以说一下思想吗?
2010-04-12 08:49
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
回复 4楼 czyzhuo
叫板的吧?
周岁的计算是以生日那天为界限的,当前日期如果在生日之前或之后应该结果是不一样的!

★★★★★为人民服务★★★★★
2010-04-12 10:07
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
收藏
得分:0 
回复 2楼 cnfarer
通过计算求得我试啦,但差不出来  ,说 年龄 无效  不懂什么意思
2010-04-12 17:42
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
收藏
得分:0 
说的都太笼统,能说的细一点吗?
2010-04-12 17:45
czyzhuo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:17
帖 子:230
专家分:1459
注 册:2010-3-11
收藏
得分:0 
回复 5楼 cnfarer
请说话客气一些
我个人认为,时间精确到时分秒时,这样相减,已经足够精确了
我真的想不出还有更精确的计算方法
我是真心向你请教的
你竟然这么粗鲁地说话
无言。。。。
2010-04-13 09:18
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:1 
给个函数给大家吧
基本上是转了别人的 出处已经不记得了
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE  FUNCTION GetDateDiffValue(@begin datetime,@end datetime,@ReturnType int)
RETURNS INT
AS
--@begin:开始日期,@end:结束日期,@ReturnType:返回数据类型(0:year;1:month;2:day)
BEGIN
   DECLARE @ReturnValue INT
   DECLARE @CurrentValue varchar(25)
   SET @CurrentValue=dbo.GetYearMonthDayPro(@begin,@end)
   IF @ReturnType=0
      SET @ReturnValue=SUBSTRING(@CurrentValue,1,CHARINDEX('年',@CurrentValue)-1)  
   ELSE
      IF @ReturnType=1
         SET @ReturnValue=SUBSTRING(@CurrentValue,CHARINDEX('年',@CurrentValue)+1,CHARINDEX('月',@CurrentValue)-CHARINDEX('年',@CurrentValue)-1)
      ELSE      
         SET @ReturnValue=SUBSTRING(@CurrentValue,CHARINDEX('月',@CurrentValue)+1,CHARINDEX('天',@CurrentValue)-CHARINDEX('月',@CurrentValue)-1)
   RETURN @ReturnValue
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

--------------------------------------------
SELECT dbo.GetDateDiffValue('1985-10-23','2010-4-13',0) 年,
dbo.GetDateDiffValue('1985-10-23','2010-4-13',1) 月,
dbo.GetDateDiffValue('1985-10-23','2010-4-13',2) 日
结果:
               
24      5          21
 
这个函数有点小BUG,谁有空修改后发上来共享下
2010-04-13 11:11
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
收藏
得分:0 
回复 8楼 czyzhuo
谢谢各位的帮忙!呵呵!

[ 本帖最后由 张汉卿 于 2010-4-13 12:32 编辑 ]
2010-04-13 12:30
快速回复:应该是很简单的一个题 想了半天没想出来 谁帮忙解决一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017360 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved