如何将MS Access日期转换为C#中的字符串

时间:2013-02-07 09:02:46

标签: asp.net

我能够将Access中的数据收集到我的texbox中,但日期不会停止给出错误。有没有办法抓住日期或是不可能的?没有在这个网站上我可以找到一个souluiton将日期转换为字符串以显示到文本框中。任何帮助都很棒,或者我必须将数据库日期更改为字符串。

//Dates not displaying, only errors in the while loop
//strBirthday = dr["STU_BIRTHDAY"].ToString();  This won't diplay like the other 2 strings. 

protected void btnQuery_Click(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\collection\\database.accdb");
        string strQueryString = "SELECT STU_NAME, STU_ADDRESS, STU_BIRTHDATE FROM Students WHERE STU_ID = @SID";
        OleDbCommand com = new OleDbCommand(strQueryString, con);
        com.Parameters.AddWithValue("SID", txtStuID.Text.Trim());
        con.Open();
        OleDbDataReader dr = com.ExecuteReader();

        string strName = "";
        string strAddress = "";
        string strBirthday = "";

        while (dr.Read())
        {
            strName = dr["STU_NAME"].ToString();
            strAddress = dr["STU_ADDRESS"].ToString();
            strBirthday = dr["STU_BIRTHDAY"].ToString();   
        }
        txtStuName.Text = strName;
        txtStuAddress.Text = strAddress;
        txtStuBirthDate.Text = strBirthday;
        dr.Close();
        con.Close();
    }

3 个答案:

答案 0 :(得分:1)

使用DataReader对象的“Get”方法:

DateTime dt = dr.GetDateTime("STU_BIRTHDAY");
txtBirthday = dt.ToString(CultureInfo.CurrentCulture, "yyyy-MM-dd");

一般来说,避免使用Object.ToString()。

永远不要将日期作为字符串存储在数据库中,始终使用数据库的内置“日期”或“日期时间”类型。还将日期时间值存储为UTC,绝不是本地的。

答案 1 :(得分:0)

string strNewDate = startDate.ToString("yyyyMMdd");

您可以使用任何格式。在我的情况下,我使用了"yyyyMMdd",但有很多格式。

答案 2 :(得分:0)

看看:-

方法1:

string strQueryString = "SELECT STU_NAME, STU_ADDRESS, 
CONVERT(varchar,STU_BIRTHDATE,103) as STU_BIRTHDATE
FROM Students WHERE STU_ID = @SID";

方法2:

string strQueryString = "SELECT STU_NAME, STU_ADDRESS, 
FORMAT(STU_BIRTHDATE, "dd/mm/yyyy") as STU_BIRTHDATE
FROM Students WHERE STU_ID = @SID";