2011-09-07 2 views
0

SQL 데이터베이스에서 'complaintdate'필드의 일 수를 계산하고 싶습니다. 이 필드에는 사용자가 신고서를 등록한 날짜가 저장됩니다. 현재 날짜로부터 20 일 이상 지연되는 불만 사항을보고 싶습니다.일 수 계산

일 수를 계산하는 다른 기능이나 방법이 있습니까? 내가 사용하는 코드는 내가

Response.Write(s); 

과 같은 형식으로 미리 보여줍니다 2011년 4월 5일 오전 12시 0분 0초

`

에 의해 's'를 displayd

cmd = new SqlCommand("select complaintdate from complaintregister where compstatus='Attended & Open'", con); 
rd = cmd.ExecuteReader(); 
if (rd.Read()) 
{ 
    string s = rd["complaintdate"].ToString(); 
} 

입니다

+0

complaintdate의 데이터 유형은 무엇입니까 ??? 그리고 UR 데이터베이스 엔진은 무엇입니까 ?? mysql ?? – confucius

답변

3

complaintDate과 오늘 사이의 일 수로 totalDays을 검색합니다. 검색의 당신의 수단 GetDateFromDatabase() 교체 :

DateTime complaintDate = GetDateFromDatabase(); 
int totalDays = (int)(DateTime.Now - complaintDate).TotalDays; 
if (totalDays >= 20) 
{ 
    // Perform your actions here. 20+ days have elapsed. 
} 

편집 : 나는 당신이 당신의 편집에서 제공하는 코드를 사용하려면 다음 코드를 추가 한

. 변수 cmd, conrd이 코드의 다른 위치에 선언되어 있다고 가정합니다.

cmd = new SqlCommand("select complaintdate from complaintregister where compstatus='Attended & Open' ", con);` 
rd = cmd.ExecuteReader(); 
if (rd.Read()) 
{ 
    string s = rd["complaintdate"].ToString(); 
} 

DateTime complaintDate; 
try 
{ 
    complaintDate = Convert.ToDateTime(s); 
} 
catch 
{ 
    Response.Write("An error occurred while trying to convert the date!"); 
    return; 
} 

int totalDays = (int)(DateTime.Now - complaintDate).TotalDays; 
if (totalDays >= 20) 
{ 
    // Perform your actions here. 20+ days have elapsed. 
} 
+0

그것의 작업 ...하지만 resul은 155.450726453993 ... 2011 년 4 월 5 일 12:00:00 형식의 날짜 저장소 – Roshan

+0

'totalDays'를'int'로 변환하기 위해 편집 했으므로 십진수없이 155를 반환합니다 . 'complaintDate.ToString ("m/d/yyyy")' –

3

질문에서이 비교를 데이터베이스 또는 코드에서 수행 할 것인지 확실하지 않습니다.

SQL Server에서 검사를 수행하려면 DATEDIFF 함수를 사용할 수 있습니다. 당신이 코드에서 검사를 수행 할 경우

, 당신은 DateTime.Subtract를 사용할 수 있습니다

var complaintDate = new DateTime(2011, 9, 1); 
var daysSinceComplaint = (int)DateTime.Now.Subtract(complaintDate).TotalDays; 
Console.WriteLine(daysSinceComplaint); 
0

SQL Server의 또 다른 해결책이 경과 얼마나 많은 일 표시하는 테이블에서 계산 된 필드에 넣어하는 것입니다. CompliantDate가 null 인 경우 Null을 표시합니다.

ALTER TABLE ComplianceTable ADD 
DaysLapsed AS datediff(dd,CompliantDate,getdate()) 
GO 
+0

내 솔루션은 SQL Server datetime 프레임을 사용하고 숫자가 줄어든 날짜를 반환하므로 날짜 형식 지정 등의 문제가 발생합니다. C#에서 작성 if (dayslapsed> 20) {DoSomething();} –