2011-04-10 99 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中的一個問題

相關問題