-2

我有数据库和一个日期类型的生日字段。我必须在 c# 中找到他们生日的平均年龄、最大年龄和最小年龄。你能帮助我吗?

4

2 回答 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 回答