首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求一年龄的算法,该怎么解决

2012-01-02 
求一年龄的算法我做的是c#应用程序,有出生年月字段,客户让这个字段为字符型,现在给任一个时间如2007年6月6

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


[解决办法]
31-35?是怎么算出来的?
[解决办法]
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;
}
[解决办法]
你的问题没有说明白阿!!

[解决办法]
根据出生日期和当前日期就可以计算年龄了
[解决办法]
string st = "2007-6-6 ";
DateTime dt;
DateTime.TryParse(st, out dt);
DateTime dt1 = new DateTime(dt.Year - 31, dt.Month, dt.Day);

是否这个意思?
[解决办法]
南方算虚岁,北方算实岁,呵呵,也没那么简单吧?
[解决办法]

[解决办法]
1,截取年字段出来和当前日期年字段相减得到年数
2,DateTime d1;
DateTime d2;
//赋值
TimeSpan t = d2-d1;

int days = (int)t.TotalDays;
int year = days/365;
[解决办法]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

create 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
------解决方案--------------------


程序实现如下
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
[解决办法]
我这里运行没错,这是个函数。
[解决办法]
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)
[解决办法]
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)

热点排行