2016-07-26 36 views
1

我要檢查今天爲用戶 登錄宗旨到期日這裏是我的代碼如何在字符串運算符的幫助下比較兩個存儲在字符串中的日期?

string today = DateTime.Today.ToString("yyyy-MM-dd"); 
command = new SqlCommand("select * from CompanyRegistered where Comp_Id=" + CompanyRegId, connection); 

SqlDataReader dr = command.ExecuteReader(); 
dr.Read(); 
DateTime TheDate = dr.GetDateTime(5); 


string strDate = TheDate.ToString("yyyy-MM-dd"); 

//string up= Convert.ToDateTime(MyReader["AccountExpiry"]).ToString("yyyy-MM-dd"); 
int result = today.CompareTo(strDate); 
if (result > 0) 
{ 
} 
+0

爲了比較日期,你可以使用「=」,「<", or ">」 – 2016-07-26 08:39:54

+1

爲什麼地球上你會將datetime轉換爲字符串進行比較? – ken2k

+1

爲什麼不使用DateTime而不是String? – jayvee

回答

2
DateTime TheDate = dr.GetDateTime(5); 

是指存儲在數據庫中爲DateTime你的價值。

請不要將其轉換爲字符串。比較DateTime值改爲:

DateTime theDate = dr.GetDateTime(5); 
DateTime today = DateTime.Today; 
if (today > theDate) 
{ 
    ... 
} 
2

不要。只需要使用string來表示需要爲文本的內容,例如想要顯示日期。

你已經擁有你想要的正確DateTime S中的值,這樣你可以對它們進行比較:

using(SqlDataReader dr = command.ExecuteReader()) 
{ 
    if(dr.Read() && !dr.IsDbNull(5)) 
    { 
    DateTime userExpiryDate = dr.GetDateTime(5); 
    if (userExpiryDate > DateTime.Today) 
    { 
     // Do something 
    } 
    } 
} 

邊注:添加一些錯誤處理 - 你可能不會得到任何記錄,或null值。此外,檢查出using - 許多SQL類,如SqlConnectionSqlDataReaderIDisposable,因此需要在使用後Dispose() d。