2013-03-19 43 views
1

我真的遇到麻煩了<asp:TextBox>採取的日期,並在「日期」類型字段在我的MSSQL數據庫中存儲存儲從 日期。目前我的代碼忽略了我的文本框值,並存儲了當前日期。我希望有人能幫幫忙! 在MSSQL「日期」字段

這裏是我的代碼,我收集的日期是這樣的:

DateTime end = DateTime.Now; 
end = Convert.ToDateTime(txtEndDate.Text); 

然後這條線是與我的查詢一起使用,將參數綁定。

AppendNews.Parameters.Add(new SqlParameter("@show_to", end)); 

出於興趣,當我在本地主機上運行該程序時,一切正常!

問候

亞當

+0

你想從DATE帶走DAY吧......?你能多解釋一下嗎? – Pandian 2013-03-19 12:44:06

+0

這是什麼時候不工作?有拋出異常嗎? – Oliver 2013-03-19 12:44:12

+0

這是不行的DateTime結束;而不是Datetime結束= Datetime.Now; – 2013-03-19 12:44:38

回答

0

問題實際上是因爲ASP服務器的文化與數據庫服務器不匹配。爲了解決這個問題,可以在ASP項目的web.config文件中設置文化。像這樣做,作爲<system.web>包裝的一部分。

<globalization uiCulture="en-GB" culture="en-GB"/> 

然後,您可以通過這條線在腳本中引用此值,當您從

DateTime dFrom = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.CurrentUICulture); 

希望這有助於收集的價值!

1

嘗試使用:

bool isDateValid = DateTime.TryParseExact(
txtEndDate.Text,"dd/MM/yyyy", 
System.Globalization.CultureInfo.InvariantCulture, 
DateTimeStyles.None,out end) 

這將嘗試使用定義的格式解析字符串並返回false,如果格式無效。

0

使用更強的錯誤檢查DateTime.TryParse。您的日期時間可能沒有得到正確的解析。

DateTime end; 

if(!DateTime.TryParse(txtEndDate.Text, out end)) 
{ 
    throw new FormatException("End Date must be in a valid format"); 
} 

我會用SqlParameterCollection.AddWithValue或指定SqlDbType

AppendNews.Parameters.AddWithValue("@show_to", end); 
+0

無,這些解決方案的工作。我相信問題在於日期變量的格式。服務器返回MM/dd/yyyy並返回本地dd/MM/yyyy。兩者之間的轉換似乎失敗了。 – Adam92 2013-03-19 13:42:17

+0

您使用的是SqlConnection還是OdbcConnection?什麼Sql Type是你的參數'@ show_to'(例如Date,Datetime2等)?存儲過程對參數有什麼作用? sql輸出的錯誤是什麼?何時輸出錯誤? – Romoku 2013-03-19 13:44:54

+0

難道是在開發和生產服務器之間在操作系統級別上設置日期格式的方式有所不同嗎? – 2013-03-19 13:59:03