2017-04-20 111 views
1

存在來自CSV文件的輸入,格式爲dd/mm/yyyy。 我必須將這些日期值傳遞給存儲過程。 我想將其轉換爲mm/dd/yyyy格式,然後將其批量複製到c#代碼中數據表的數據庫表中。將日期時間字符串以dd/mm/yyyy格式轉換爲日期時間格式mm/dd/yyyy

我應該在代碼中還是在存儲過程中將其發送給? 請指教。我嘗試了所有可能的組合。

+2

c#和Sql服務器都不存儲datetime的顯示格式。 如果您正在讀取csv中的值到c#中,並在插入數據庫之前對其進行操作,則應該使用DateTime.TryParseExact從這些字符串中獲取DateTime結構的實例。 –

+0

確定偉大的將嘗試..如果這些日期只是csv文件中的三列中的2個會怎樣。 即csv文件中有3列:id,startdate,enddate。 我希望能夠接受dd/mm/yyyy的值,然後在將它們傳遞給存儲過程之前將它們轉換爲mm/dd/yyyy。 – roshanaraman

+0

通過使用DateTime.TryParseExact並將這些DateTime值傳遞給存儲過程而無需格式化,將「dd/mm/yyyy」值轉換爲DateTime,如@ZoharPeled所示。除非你做了「非常非常非常糟糕」的事情,並將日期作爲文本存儲在數據庫中。如果是這種情況,那麼你可以通過使用'datetime.ToString(「mm/dd/yyyy」)來設置它們的格式;' – Fabio

回答

0

您應該將值解析爲DateTime在C#中,並通過此日期值到SQL客戶端或ORM而不將其轉換爲字符串

2

您可以使用DateTime.ParseExact

var parsedDate = DateTime.ParseExact(dateString, "dd/MM/YYYY", CultureInfo.InvariantCulture); 

其中dateString是您想要解析的日期的字符串表示形式。

如果您的存儲過程需要日期時間,則可以使用parseDate值。否則,如果它希望在你所提到的格式的字符串,您可以通過以下值:

parsedDate.ToString("MM/dd/YYYY") 
+0

這看起來可能有效。 除了我需要做的只是在csv文件中的兩列3列.. 所以你可以幫助這個請! – roshanaraman

+0

@roshanaraman您可以將其應用於任意數量的列。您將讀取文件的行,並針對三列中的兩列中的每行應用此行。 – Christos

+0

如果我從csv文件獲取值,請編寫代碼以瞭解如何將它用於特定列。例如。我有id,startdate和enddate作爲我的csv文件中的3列。 其中我需要轉換startdate和enddate列的日期時間格式。 我如何實現這一點。 – roshanaraman

0

如果你的SQL字段類型設置爲日期值類型是完全不可能格式化日期的任何一個根據你的願望,因爲數據庫引擎不會存儲格式化的值,而是存儲日期值本身。

確保在更新SQL數據庫中的值之前解析DateTime代碼。

string date = "2000-02-02"; 
DateTime time = DateTime.Parse(date); // Will throw an exception if the date is invalid. 

還有可用的TryParse方法。它會確保你試圖解析的日期值確實是正確的格式。

string input = "2000-02-02"; 
DateTime dateTime; 
if (DateTime.TryParse(input, out dateTime)) 
{ 
    Console.WriteLine(dateTime); 
} 

那麼很歡迎你來選擇您的參訪顯示格式,使用給定的格式之一的日期時間變量更多的存放後(閱讀以下可用格式的完整列表的鏈接)。

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

相關問題