2015-07-28 89 views
0

嗨有一個程序,我正在和日記部分我有一些問題。轉換和比較mysql和c#datetime

而註冊的條目我用下面的代碼,appdate是約會日期。 dtpappdate是我的datetimepicker。

cmd.Parameters.AddWithValue("?appdate", dtpappdate.Value.ToShortDateString()); 

上面的代碼工作正常,當我進行條目。它成功將日期存儲到mysql數據庫中。

然後當我從數據庫中讀出我想要在數據庫中的條目的日期和我的當前日期比較計算機上,這樣它只會顯示匹配的日期顯示我的待辦事項清單。

以下是閱讀和比較的代碼,但我的程序給我一個錯誤。告訴我我無法轉換數據。

DateTime dn = new DateTime(); 
     dn = DateTime.Now; 

     string constring = "Server=localhost;Database=vetsoft; uid=root;pwd=geyikler88;"; 
     string command = "SELECT * FROM vetsoft.clients "; 

     try 
     { 
      using (MySqlConnection myCon = new MySqlConnection(constring)) 
      { 
       using (MySqlCommand cmd = new MySqlCommand(command, myCon)) 
       { 
        myCon.Open(); 

        MySqlDataReader myReader = cmd.ExecuteReader(); 

        while (myReader.Read()) 
       { 
        if(Convert.ToDateTime(myReader["appdate"].ToString()) == dn) 
        { 
         listBox1.Items.Add("İsim: " + myReader["name"].ToString() + " Telefon: " + myReader["phone"].ToString() + " P İsim: " + myReader["pname"].ToString() + " Yaş: " + myReader["age"].ToString() + " Randevu Saati: " + myReader["apptime"].ToString() + " Hastalık: " + myReader["sickness"].ToString() + " Ek Not: " + myReader["eknot"].ToString()); 

        } 
       } 

我該如何正確進行比較?任何幫助?

+0

究竟是什麼錯誤?在哪一行?你的變數是什麼?爲什麼你保留你的'DateTime'值與他們的字符串表示?這是一個不好的方法。插入值時使用'dtpappdate.Value',而不是字符串表示。 –

+0

你爲什麼使用字符串?如果它是數據庫中的日期,那麼只需在每個地方使用'DateTime'。不要在'dtappdate.Value'上調用'ToShortDateString'。將'myReader [「appdate」]'轉換爲'DateTime'而不是將其轉換爲字符串並返回。 –

+0

其他信息:無法MySQL的日期/時間值轉換爲System.DateTime這是我得到 – Licentia

回答

0

你比較的是C#的DateTime.Now ==從MySQL數據庫的日期時間。這是不可能的,除非是純粹的愚蠢的運氣,因爲DateTime.Now包含了當前時間到tick。

假設您只對日期匹配感興趣,請使用DateTime.Today進行比較,但MySQL數據庫中的日期值也應該是日期,因此如果您要存儲時間,則需要剝離時間。

0

你不應該轉換日期字符串比較。如果你只是想比較的日期時間的日期部分,使用日期屬性,例如:

var appDate = myReader["appdate"] as Datetime; 
if (appDate.Date == Datetime.Now.Date) { 
    // Your code goes here 
} 

這也是很好的做法,以保持在日期分貝UTC。這樣您就不必擔心時區和夏季節省時間。