我已經安排的方式,將符合格式YYYY-MM-DD HH字符串:mm:ss的 它可能看起來像這樣2010-20-12 13:30:00
將字符串轉換爲smalldatetime
我需要插入到SMALLDATETIME這SQL Server中的列。列的格式是 yyyy-MM-dd HH:mm:ss
我需要字符串看起來像這樣2010-12-20 13:30:00
否則SQL Server將得到月份和日期混淆。
感謝您的想法
我已經安排的方式,將符合格式YYYY-MM-DD HH字符串:mm:ss的 它可能看起來像這樣2010-20-12 13:30:00
將字符串轉換爲smalldatetime
我需要插入到SMALLDATETIME這SQL Server中的列。列的格式是 yyyy-MM-dd HH:mm:ss
我需要字符串看起來像這樣2010-12-20 13:30:00
否則SQL Server將得到月份和日期混淆。
感謝您的想法
不要使用字符串開始將您的數據發送到SQL服務器。相反,請使用參數化的SQL語句,並在指定DateTime
後讓驅動程序爲您完成工作。 (請參閱SqlCommand.Parameters文檔中的一個示例。)
這就是您應該如何處理幾乎所有值值 - 尤其是那些由用戶輸入的值。除了不必擔心格式化,這將防止SQL注入攻擊。
使剛剛離開解析您輸入的字符串作爲DateTime
,這是最好的DateTime.ParseExact
或DateTime.TryParseExact
,完成取決於你是否要解析的故障是一個異常或沒有結果的任務。
您不應該將其轉換爲字符串。使用參數化的sql查詢或存儲過程,只提供一個datetime對象作爲參數。 sql命令將處理插入就好了。
如果您只有字符串,可以使用DateTime.Parse和DateTimeFormatInfo將它變成日期時間(有關創建格式信息的幫助,請參閱this documentation)。
你可以嘗試這樣的事:
//First convert string to DateTime
DateTime dt;
dt = Convert.ToDateTime("2010-20-12 13:30:00");
//Second Convert DateTime to formatted string
string t_time;
t_time = dt.ToString("yyyy-dd-MM hh:mm tt");
HTH。
感謝您提供有關參數的提示。我在網絡應用程序中使用它們。這是一款需要將某些sqlite數據與網絡應用程序同步的移動設備,並且我沒有真正考慮過注入。 – Louis 2011-03-14 17:08:34