2017-04-20 109 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

相关问题