sql查询显示

lvg 2009-01-13 10:52:34
数据库年龄字段存的是出生日期 1981-12-23

string str = @"select name, age from dbus ";

查询年龄 显示在dataGridView上, 需要把1981-12-23 转换成这个人的当前岁数: 28

请教方法:
...全文
224 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡面之夏 2009-01-14
  • 打赏
  • 举报
回复
查询出来后,用当前时间对比查询出来的出身日期计算年龄.
raozhiven 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 niki_zhu520 的回复:]
原来是这样啊!
11楼是对的~~
[/Quote]

试问:2008-12-31和2009-01-01出生的两个人,到今天各有几岁了?虚岁几岁了?
布丁oo 2009-01-13
  • 打赏
  • 举报
回复

SELECT DATEPART(year, GETDATE()) - datepart(year,cast('1981-12-23' as datetime))

niki_zhu520 2009-01-13
  • 打赏
  • 举报
回复
原来是这样啊!
11楼是对的~~
treesky 2009-01-13
  • 打赏
  • 举报
回复
直接用数据库里面的函数和当前时间做差显示出来重命名一下就可以了
niki_zhu520 2009-01-13
  • 打赏
  • 举报
回复
表中有如下记录:
ID age names
1 1981-12-23 00:00:00 john
2 1986-08-11 00:00:00 tumao
---------------------------------------------------------------------------------------------------------
select DATEPART(year, GETDATE()) - (SELECT DATEPART(year,age) as age1 from dbus where ID=1)
得到结果28

但,我这个SQL的话只能获取单个的记录。如数据库有多条记录,若要全部记录达到要求,需用for-sql!【看看大家还有什么解决办法】
cwmwss 2009-01-13
  • 打赏
  • 举报
回复
好像11楼的比较简单
jiang_jiajia10 2009-01-13
  • 打赏
  • 举报
回复
直接运算就可以,
程序里
DateTime.Now.Year - Convert.ToDateTime(str).Year
SQL里
Convert(varchar(12),getdate(),112)-Convert(varchar(12),字段,112)
raozhiven 2009-01-13
  • 打赏
  • 举报
回复

SELECT Name, YEAR(GETDATE() - Birthday) - 1899 AS Age FROM dbus


这个可是算了虚岁的哦。
GTX280 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 GTX280 的回复:]
select name, Year((GETDATE()- age)) as age from dbus
[/Quote]
汗,还是没写对
select YEAR(GETDATE())-YEAR(age) as age from dbus
!!!
lovehongyun 2009-01-13
  • 打赏
  • 举报
回复
直接减一下就行了
int i = DateTime.Now.Year - Convert.ToDateTime(str).Year;
设备管理系统 2009-01-13
  • 打赏
  • 举报
回复
在sql语句写比较简单。。
也可以用程序实现。写个函数,返回当前时间与数据库中字段的差值就可以了啊
特别 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 lvg 的帖子:]
数据库年龄字段存的是出生日期 1981-12-23

string str = @"select name, age  from dbus ";

查询年龄 显示在dataGridView上, 需要把1981-12-23 转换成这个人的当前岁数: 28

请教方法:
[/Quote]

string str = @"select name, datediff(year,getdate(),age) as age from dbus ";


如果算虚岁的话,再+1
sy_binbin 2009-01-13
  • 打赏
  • 举报
回复
用SQL里的datediff方法就可以吧
GTX280 2009-01-13
  • 打赏
  • 举报
回复
select name, Year((GETDATE()- age)) as age from dbus
GTX280 2009-01-13
  • 打赏
  • 举报
回复
select name, Year((GETDATE()-Birthday)) as age from dbus
优途科技 2009-01-13
  • 打赏
  • 举报
回复
private  int  YearSpan()  
{
DateTime DS='1981-12-23 ' ;
DateTime DE='2009-1-13' ;//Now
return (DE.Year - DS.Year);

}
llsen 2009-01-13
  • 打赏
  • 举报
回复
用sql计算年龄 就好了
llsen 2009-01-13
  • 打赏
  • 举报
回复
SELECT DATEPART(year, GETDATE()) - datepart(year,cast('1981-12-23' as datetime))
优途科技 2009-01-13
  • 打赏
  • 举报
回复
单纯的SQL语句可能无法解决问题。需要自己编写转换函数了。
加载更多回复(4)

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧