2013-06-08 1 views
-2

날짜 유형이있는 데이터베이스와 생일 필드가 있습니다. 나는 평균 연령, 최대 나이 및 최소 연령은 C 생일에 그들의 생일을 찾아야한다. 너 나 좀 도와 줄 수있어?C에서 sql 날짜 필드에서 평균 연령을 얻는 방법 #

+0

그리고 ** 어떤 데이터베이스 ** (및 어떤 버전)를 사용하고 있습니까? SQL은 쿼리 언어 일뿐입니다 ... –

+0

-1. 스택 오버플로는 코드 작성을 돕기 위해 작성되었습니다. 데이터베이스에서 생년월일을 검색하는 방법을 알고 있습니까? 그렇지 않다면 웹에 대한 많은 정보가 있습니다. 그런 다음 각 사람의 나이를 계산하십시오. 다시 쉽고 잘 기록됩니다. 마지막으로 필요한 평균을 계산하십시오. 가혹한 환경에서 실제로 코드를 작성했지만 작동하지 않는 경우 작동하지 않는 코드와 세부 정보를 게시하십시오. –

답변

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 
     } 
     } 
    } 
+0

영업일에만 생년월일이 있기 때문에 나이를 얻으려면 오늘 날짜를 생년월일과 비교해야합니다. –

1

날짜 및 시간 함수가 데이터베이스에 특정한을 . SQL 서버에서이 작업을 수행하는 방법을 보여줍니다 :

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가 정수 값의 정수 평균을 수행하기 때문에 발생합니다. 일부 데이터베이스는 캐스트없이 부동 소수점 평균을 생성합니다.

now(), sysdate(), CURRENT_DATETIME과 같은 기능도 데이터베이스마다 다릅니다.

관련 문제