簡體   English   中英

在C#中將字符串轉換為DateTime並寫入SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM