我有数据库和一个日期类型的生日字段。我必须在 c# 中找到他们生日的平均年龄、最大年龄和最小年龄。你能帮助我吗?
问问题
3599 次
2 回答
1
日期和时间函数特定于数据库。下面显示了如何在 SQL Server 中执行此操作:
select avg(cast(datediff(year, birthdate, getdate()) as float)) as avg_age,
min(datediff(year, birthdate, getdate())) as min_age,
max(datediff(year, birthdate, getdate())) as max_age
所有数据库都具有相似的功能,但它们可能具有不同的名称或略有不同的语法。这cast( . . . to float)
是因为 SQL Server 对整数值进行整数平均。一些数据库会在没有强制转换的情况下产生浮点平均值。
该getdate()
功能在数据库之间也有所不同——例如now()
, sysdate()
, CURRENT_DATETIME
。
于 2013-06-08T14:49:51.163 回答
0
您需要使用以下 SQL 查询:
SELECT MIN(age_columnName) FROM TableName;
SELECT MAX(age_columnName) FROM TableName;
SELECT AVG(age_columnName) FROM TableName;
您需要在您的 c# 代码中使用这些查询,如下所示:
using System.Data.SqlClient;
//
// First access the connection string, which may be autogenerated in Visual Studio for you.
//
string connectionString = "connection string"
//
// In a using statement, acquire the SqlConnection as a resource.
//
using (SqlConnection con = new SqlConnection(connectionString))
{
//
// Open the SqlConnection.
//
con.Open();
//
// The following code shows how you can use an SqlCommand based on the SqlConnection.
//
using (SqlCommand command = new SqlCommand("SELECT AVG(age_columnName) FROM TableName", con))
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// process it
}
}
}
于 2013-06-08T12:27:15.400 回答