我在SQL Server 2008中有一列数据类型DATE
,它只以“yyyy-MM-dd”格式存储日期,但是当我通过C#从数据库中选择日期并转换为字符串时,它显示时间部分也喜欢。
"2012-04-21 12:00:00"
我没有在数据库中存储时间的问题是我的查询!
string sql = @"select card_no, amount, csc,expdate " +
"from user_account_card " +
"where user_id = '" + loginsession.Auser + "';";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader red = cmd.ExecuteReader();
while (red.Read())
{
loginsession.Cardno = Convert.ToString(red["card_no"]);
loginsession.Cardamount = Convert.ToString(red["amount"]);
loginsession.Csc=Convert.ToString(red["csc"]);
loginsession.Expdate = Convert.ToString(red["expdate"]);//date part
break;
}
MessageBox.Show("database value from database--" +loginsession.Expdate);
请帮我做什么
答案 0 :(得分:3)
如果时间显示为午夜,那么无论出于何种意图和目的,它都会在没有时间的情况下存储它。
SQL的日期数据类型不包含时间,但您需要重新设计表。不确定你是否需要/想要这样做。
你也可以试试这个:
((Date)red["expdate"]).ToString();
由于这将转换为Date数据类型而不是DateTime数据类型,您应该只在返回的字符串中看到日期部分。
答案 1 :(得分:2)
Convert.ToString没有“日期”重载,只有"datetime"
答案 2 :(得分:2)
SQL Server 2008将日期存储在DATE
列中 - 您可以在SQL Server Management Studio中轻松验证。另外:DATE
列不会以特定的字符串格式存储日期 - 这就是您的看法。日期是日期是日期 - 它存储为日期,本身没有任何“格式”。
但是,.NET没有“仅限日期”的数据类型,因此从SQL Server读取DATE
列最终会出现在.NET中的DateTime
变量中,该变量包含DATE和TIME。
所以这不是SQL Server的问题 - 而是.NET中的一个问题