[英]Convert string to DateTime in C# and write to SQL
我正在嘗試將字符串轉換為DateTime並將其寫入SQL中的表中的datetime字段。
string dateTimeString = line.Substring(5, 14);
var date = DateTime.ParseExact(dateTimeString, "dd/MM/yyyy", null).ToString("MM/dd/yyyy");
SqlCommand command = new SqlCommand("INSERT INTO dbo.ODCZYTY (numer_karty,data, rodzaj,obszar,kierunek) VALUES(@numer_karty,@data, @rodzaj, @obszar, @kierunek)", conn);
command.Parameters.AddWithValue("@numer_karty", line.Substring(0, 5));
command.Parameters.AddWithValue("@data", date);
command.Parameters.AddWithValue("@rodzaj", line.Substring(19, 2));
command.Parameters.AddWithValue("@obszar", line[line.Length - 2]);
command.Parameters.AddWithValue("@kierunek", line[line.Length - 1]);
line.Substring(5, 14) = 20160127122843
但是我得到了這個:
從字符串轉換日期和/或時間時轉換失敗
我究竟做錯了什么?
不要僅將字符串轉換為DateTime
,然后再轉換回字符串,只是為了將其通過SQL參數傳遞。 您表中的列可能需要一個DateTime
值,並且由於要使用AddWithValue
將其添加,因此它將認為該值是字符串而不是DateTime. Simple leave the parsed
and then you can use
DateTime. Simple leave the parsed
DateTime object as
DateTime. Simple leave the parsed
object as
DateTime即可and then you can use
AddWithValue`,例如:
var date = DateTime.ParseExact(dateTimeString, "dd/MM/yyyy", CultureInfo.InvariantCulture);
//and while adding paramter
command.Parameters.AddWithValue("@data", date);
(也可以使用CultureInfo.InvariantCulture
而不是null
來解析DateTime
,您可能會遇到文化問題,其中DateTime
中的默認分隔符不同於/
)
另一種選擇是使用Add
明確指定數據庫類型,例如:
command.Parameters.Add(new SqlParameter("@data", SqlDbType.DateTime) {Value = date});
您嘗試解析這樣的字符串
line.Substring(5, 14) = "20160127122843"
與
DateTime.ParseExact(dateTimeString, "dd/MM/yyyy", null)
這應該如何工作? 嘗試這個
string dateTimeString = line.Substring(5, 8); //just 8 to get the date only
var d = DateTime.ParseExact(dateTimeString , "yyyyMMdd", CultureInfo.InvariantCulture);
此后,請勿使用ToString()
重新轉換日期。 只需將其作為輸入日期傳遞給參數即可。
如果您需要時間,請保留(5,14)
並嘗試執行此操作
var d = DateTime.ParseExact(dateTimeString , "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
將其轉換為ISO-8601格式(yyyy-mm-dd等)以確保完全清晰
“ MM / dd / yyyy”僅適用於具有我們英語設置的SQL Server安裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.