数据库年龄字段存的是出生日期 1981-12-23string str = @"select name, age  from dbus ";查询年龄 显示在dataGridView上, 需要把1981-12-23 转换成这个人的当前岁数: 28请教方法:

解决方案 »

  1.   

    单纯的SQL语句可能无法解决问题。需要自己编写转换函数了。
      

  2.   

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

  3.   

    private  int  YearSpan()  
      {  
        DateTime DS='1981-12-23 ' ;
        DateTime DE='2009-1-13' ;//Now
        return  (DE.Year  -  DS.Year);  
        
      }
      

  4.   

    select name, Year((GETDATE()-Birthday)) as age from dbus
      

  5.   

    select name, Year((GETDATE()- age)) as age from dbus
      

  6.   

    用SQL里的datediff方法就可以吧
      

  7.   


    string str = @"select name, datediff(year,getdate(),age) as age from dbus ";
    如果算虚岁的话,再+1
      

  8.   

    在sql语句写比较简单。。
    也可以用程序实现。写个函数,返回当前时间与数据库中字段的差值就可以了啊
      

  9.   

    直接减一下就行了
    int i = DateTime.Now.Year - Convert.ToDateTime(str).Year;
      

  10.   

    汗,还是没写对
    select YEAR(GETDATE())-YEAR(age) as age from dbus
    !!!
      

  11.   


    SELECT Name, YEAR(GETDATE() - Birthday) - 1899 AS Age FROM dbus
    这个可是算了虚岁的哦。
      

  12.   

    直接运算就可以,
    程序里
    DateTime.Now.Year - Convert.ToDateTime(str).Year
    SQL里
    Convert(varchar(12),getdate(),112)-Convert(varchar(12),字段,112)
      

  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!【看看大家还有什么解决办法】
      

  14.   


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

  15.   

    select name, (year(getdate)-cast(sbstring(cast(A as varchar),1,4))as int) age  from dbus