我做的是c#应用程序,有出生年月字段,客户让这个字段为字符型,现在给任一个时间如2007年6月6日,怎么求年龄段呢,如31-35。

解决方案 »

  1.   

    PjLoginInfo loginInfo = PjLoginInfoUtil.GetLoginInfo();        public string Getage(M_staffVO vo, IDBContext context)
            {
                //SQL文を作成する。               
                StringBuilder builder = new StringBuilder();            builder.Append(" SELECT ");
                builder.Append("      DATEDIFF(yy,SEIYMD,getdate()) AS AGE");
                builder.Append(" FROM");
                builder.Append("      M_STAFF");
                builder.Append(" WHERE 0=0");
                builder.Append("   AND KAISHACD = '" + loginInfo.Kaishacd + "'");
                builder.Append("   AND STAFFCD = '" + vo.Staffcd + "'");
                builder.Append("   AND DELFLG = '0'");            //SqlStatementを生成する。
                SqlStatement sqlStatement = new SqlStatement(builder.ToString(), CommandType.Text);            String sqlStr = sqlStatement.ToString();            //検索結果を取得する。
                IDataReader dataReader = DBConnector.ExecuteQuery(sqlStatement, context);            string age = "";
                
                if (dataReader.Read())
                {
                    age = Convert.ToString(dataReader["AGE"]);
                }            dataReader.Close();            return age;
            }
      

  2.   

    string st = "2007-6-6";
    DateTime dt;
    DateTime.TryParse(st, out dt);
    DateTime dt1 = new DateTime(dt.Year - 31, dt.Month, dt.Day);是否这个意思?
      

  3.   

    1,截取年字段出来和当前日期年字段相减得到年数
    2,DateTime d1;
    DateTime d2;
    //赋值
    TimeSpan t = d2-d1; int days = (int)t.TotalDays;
    int year = days/365;
      

  4.   

    打开这个表,出生年月如:
    select csny   from bb_gbdjb
    1963.05
    1968.01
    1962.01
    1962.10
    1960.08
    如果给当年时间,怎么求年龄段?
      

  5.   

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    gocreate FUNCTION [dbo].[AGE] (@startdate datetime,@enddate datetime)
    RETURNS int
    WITH EXECUTE AS CALLER
    AS
    BEGIN
         DECLARE @addday int
     declare @year int
     declare @age int
         SET @addday=0
         set @year=datepart(year,@startdate)    
         while (@year<=datepart(year,@enddate))
         begin
    if (@year=datepart(year,@enddate) and datepart(month,@enddate)>=3)
    begin
    if ((@year%4=0 and @year%100<>0) or (@year%400=0))
    set @addday=@addday+1
    end
    else
    if (((@year%4=0 and @year%100<>0) or (@year%400=0)) and @year<>datepart(year,@enddate))
    set @addday=@addday+1
    set @year=@year+1
         end
     set @age=(datediff(day,@startdate,@enddate)-@addday)/365
         RETURN(@age)
    END
      

  6.   

    表的csny为字符型,如果给一个具体时间,有条件的求30-35这个年龄段怎么做
      

  7.   

    to alldj(灵山妖姬) 
    服务器: 消息 156,级别 15,状态 1,过程 AGE,行 4
    在关键字 'EXECUTE' 附近有语法错误。
      

  8.   

    程序实现如下
    string st1 = "2007-6-6";
    string st2 = "1963-5-1";
    DateTime dt1,dt2;
    DateTime.TryParse(st1, out dt1);
    DateTime.TryParse(st2, out dt2
    int iarrange = dt1.Year - dt2.Year;sql实现如下:
    SELECT YEAR(CONVERT(DATETIME, '2007-6-6', 102)) - YEAR(CONVERT(DATETIME, 
          csny, 102)) AS arrange
    FROM bb_gbdjb
    where id =1
      

  9.   

    declare @cDate datetime
    set @cDate = CONVERT(DATETIME, @cDate 102)SELECT YEAR(CONVERT(DATETIME, @cDate, 102)) - YEAR(CONVERT(DATETIME, 
          csny, 102)) AS arrange
    FROM bb_gbdjb
    WHERE (YEAR(CONVERT(DATETIME, @cDate, 102)) - YEAR(CONVERT(DATETIME, 
          csny, 102)) < 35) AND (YEAR(CONVERT(DATETIME, @cDate, 102)) 
          - YEAR(CONVERT(DATETIME, csny, 102)) > 30)
      

  10.   

    declare @cDate datetime
    set @cDate = CONVERT(DATETIME, @cDate 102)SELECT YEAR(@cDate)- YEAR(CONVERT(DATETIME, 
          csny, 102)) AS arrange
    FROM bb_gbdjb
    WHERE (YEAR(@cDate)- YEAR(CONVERT(DATETIME, 
          csny, 102)) < 35) AND (YEAR(@cDate)
          - YEAR(CONVERT(DATETIME, csny, 102)) > 30)