2011-04-10 104 views
2

我在SQL Server 2008中有一列数据类型DATE,它只存储格式为“yyyy-MM-dd”的日期,但当我通过C#从数据库中选择日期并转换为字符串时,它显示时间部分也类似。SQL Server 2008的DATE数据类型重现时间!

"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

如果时间显示为凌晨那么对于所有意图和目的,它存储无时间。

SQL的日期数据类型不包含时间,但您需要重新设计表。不知道你是否需要/想要这样做。

你也可以试试这个:

((Date)red["expdate"]).ToString(); 

因为这将转换为日期数据类型,而不是datetime数据类型,你应该只看到返回的字符串中的日期部分。

+0

[“的所有意图和目的”(http://en.wiktionary.org/wiki/for_all_intents_and_purposes) – 2011-04-10 11:09:47

+1

@Martin - 当你正在纠正我的英语?似乎SO上可能会有更多需要帮助的目标。 (感谢提示):D – Hogan 2011-04-10 11:17:31

+0

应该是((DateTime)red [“expdate”])。ToShortDateString(); – Magnus 2011-04-10 11:18:59

2

Convert.ToString没有一个 “约会” 过载,只"datetime"

+0

- 感谢信息现在我将它转换成一些很薄的其他东西 – 2011-04-10 13:30:02

2

SQL Server 2008将只存储在DATE列日 - 您可以轻松地验证在SQL Server Management Studio中。此外:一个DATE列不会以特定的字符串格式存储日期 - 这就是您如何看待它。日期是一个日期 - 它是作为日期存储的,并且本身没有任何“格式”。

但是,.NET没有“仅限日期”数据类型,因此从SQL Server读取DATE列最后会出现在包含DATE和TIME的.NET中的DateTime变量中。

所以这真的不是在这里的SQL Server的问题 - 而是在.NET中的一个问题

相关问题