SQL Server 2008的DATE数据类型缩短时间!

时间:2011-04-10 11:03:06

标签: c# sql-server-2008 date

我在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);

请帮我做什么

3 个答案:

答案 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中的一个问题