在注册页面的时候,只有选择生日的日期,存入表中,但是当要提取真实年龄的时候,表里却没有年龄这个字段,所以,我想请教一下,怎样通过系统时间减去表里存入的生日日期,再把所得的真实年龄显示到页面上,这个方法怎样实现.
附带一下,怎么样通过关键字检索整个数据库的sql查询语句.

解决方案 »

  1.   

    // 虚岁?
    int age = DateTime.Now.Year - birthday.Year;
    age = (age <= 0) ? 1 : age;
      

  2.   

    晕,LS 的 LS 的不对哦
      

  3.   

    sql server有一个函数;dataiff可以实现这个功能
    例:
    dataiff(year,'1982/01/01',getdate())
    它表示从1982/01/01到现在为止共有多少年了!
      

  4.   

    不是呀,年龄我取得出来,select DATEDIFF(yy,r_birthday,getdate())as age from register
    但我就是不知道怎么显示到页面上,是这样的
    birthday 是表的字段,我在页面上用了datalist的控件,其中有一个是用来绑定年龄的,但表里没有这个字段,绑定的时候是用的别名"age",但我不知道查询语句怎么写呀,下面是我的写的查询语句,是两个表相联的,还不完全正确,因为,还有年龄这个不知道怎么绑定.所以请教一下呀.
    select top 4 register.R_id,register.R_ifdate,register.R_toppic,modelinfo.R_id,modelinfo.m_mname,modelinfo.m_type,modelinfo.m_height from register join modelinfo on modelinfo.R_id=register.R_id where R_ifdate='1'and register.R_toppic is not null order by register.R_id desc
      

  5.   

    select top 4 register.R_id,register.R_ifdate,register.R_toppic,modelinfo.R_id,modelinfo.m_mname,modelinfo.m_type,modelinfo.m_height ,
    ---年龄  DATEDIFF(yy,r_birthday,getdate())as age 
    --
    from register join modelinfo on modelinfo.R_id=register.R_id where R_ifdate='1'and register.R_toppic is not null order by register.R_id desc
      

  6.   

    上面的查询语句 把所有的 都查询出来 绑定年龄的时候 .只需要绑定字段 AGE 就可以了..楼主完全搞笑...既然2个都写出来..就不能把他们组合吗
      

  7.   

    CREATE FUNCTION DT_GETAGE (@birthday datetime)  
    RETURNS int  AS  
    BEGIN 
    if @birthday is null
    return 0declare @now datetime
    select @now = DBO.DT_NOW()if @birthday >= @now
    return 0declare @age int
    declare @bYear int
    declare @bMonth int
    declare @bDay int
    declare @nYear int
    declare @nMonth int
    declare @nDay intset @bYear = YEAR(@birthday)
    set @bMonth = MONTH(@birthday)
    set @bDay = DAY(@birthday)set @nYear = YEAR(@now)
    set @nMonth = MONTH(@now)
    set @nDay = DAY(@now)set @age = @nYear - @bYear
    if @nMonth < @bMonth
    return @age - 1if @nMonth > @bMonth
    return @ageif @nDay < @bDay
    return @age - 1return @ageEND
      

  8.   

    select name,birthday,dbo.dt_getage(birthday) as age from table1
      

  9.   

    select 年齡=DATEDIFF( Year,註冊日期,temp_date)
    (
          SELECT 主鍵, 註冊日期,temp_date =(case when getdate() >= 註冊日期 
    then dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
    else dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()),0))                FROM TABLE_TEMP) a
      

  10.   

    select dataiff(year,tb.datefield,getdate()) from tablename tb
      

  11.   

    我把结合了,而且我绑定也是age,但是动行的出错误了,请大家帮忙解决一下,这个是我的代码,我怀疑是填充数据集时候错误。
    stringsqldataRegister="
    selectregister.R_id,register.R_ifdate,register.R_toppic,modelinfo.R_id,modelinfo.m_mname,modelinfo.m_type,modelinfo.m_height ,DATEDIFF(yy,register.r_birthday,getdate())as age from register join modelinfo on modelinfo.R_id=register.R_id where R_ifdate='1'and register.R_toppic is not null order by register.R_id desc"; SqlConnection conn;
    string strCon = ConfigurationSettings.AppSettings["connectionstring"].ToString();
            conn = new SqlConnection(strCon);
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sqldataRegister, conn);
            DataSet ds = new DataSet();
            da.Fill(ds,"register");
          // da.Fill(ds.Tables["register"]);
            DlRegister.DataSource = ds;
            DlRegister.DataBind();
            DlRegister.Dispose();