我是MySQL和C#的新手。MySql中的日期類型
我將某些值存儲在數據類型爲Date的列中。我不想要時間,只有日期被儲存。 上觀看使用phpMyAdmin或MySQL命令行這些價值觀,我看到他們在格式:
YYYY-MM-DD
然而,當我在我的web應用程序檢索這些值,它們顯示採用以下格式:
YYYY-MM-DD HH:MM(具體時間爲12:00)。
爲什麼會發生這種情況?我怎樣才能防止這種情況發生?
我是MySQL和C#的新手。MySql中的日期類型
我將某些值存儲在數據類型爲Date的列中。我不想要時間,只有日期被儲存。 上觀看使用phpMyAdmin或MySQL命令行這些價值觀,我看到他們在格式:
YYYY-MM-DD
然而,當我在我的web應用程序檢索這些值,它們顯示採用以下格式:
YYYY-MM-DD HH:MM(具體時間爲12:00)。
爲什麼會發生這種情況?我怎樣才能防止這種情況發生?
您可以將日期轉換爲使用date_format()
當你獲取數據你喜歡的格式,:
select date_format(datecol, '%Y-%m-%d')
這將返回值作爲一個字符串。
謝謝!這爲我做了詭計。但是我認爲下次我會使用_DATETIME_而不是_DATE_ ..更不用說麻煩了。 –
當你在C#中存儲你的日期字段時,你使用DateTime對象。在這個對象中,當你不指定時間部分的時候會把一個默認值取決於全球化。
你可以學習的DateTime如何工作here
但我將檢索到的Date類型值轉換爲一個字符串(使用** toString()**),然後打印該字符串。 那麼爲什麼時間出現在最終的字符串中? –
@SinghSiddharth。 。 。在你調用'toString()'的時候,你在C#中,並且該值已被視爲日期時間。 –
你不應該從mysql獲取字符串的值。爲什麼?因爲如果您需要對該值執行任何操作(例如添加一天),則需要再次將其解析爲DateTime
。字符串解析速度可能會很慢,並且當涉及到日期時,它們很容易出現錯誤解釋,例如對mm/dd/yyyy和dd/mm/yyyy格式的誤解。
您遇到的問題是,.NET不具有Date
類型。它只有DateTime
類型。因此加載一個MySQL DATE
類型,將獲得DateTime
,其中時間部分設置爲午夜。
除了如何輸出結果之外,沒有直接的問題。如果你只是打電話.ToString()
沒有任何參數,或者你隱式地使用它作爲一個字符串,那麼你會得到一個完整的日期和時間的結果。您只需提供一個參數來指示您想要的格式。
沒有任何參數,您將獲得通用"G"
格式。這在文檔here中有解釋。
換句話說:
yourDateTime.ToString() == yourDateTime.ToString("G")
特別是,如果你只是想日期,那麼你可能想這樣做:
yourDateTime.ToString("d")
根據您的意見,您應該改爲這樣:
MySQL查詢:
SELECT Gbstartdate FROM TblGbDef
C#:
DateTime gb_start_date = (DateTime) datareader[0];
好的,謝謝!我也會嘗試這一切。這是我現在正在完成我的工作:_My SQL query_:SELECT date_format(Gbstartdate,'%Y-%m-%d')FROM TblGbDef DateTime gb_start_date = DateTime.ParseExact(datareader [0] .ToString( ),「yyyy-MM-dd」,System.Globalization.CultureInfo.InvariantCulture);''TimeSpan days_elapsed_ts = current_date - gb_start_date;''int days_elapsed = days_elapsed_ts.Days;' –
@SinghSiddharth - 查看我更新的答案。 –
http://www.dotnetperls.com/datetime-format你可能希望看到這一點。 –
謝謝!書籤。對於像我這樣的初學者來說非常有用的信息.. –
不客氣! :) –