2017-10-28 68 views
0

我需要通过逗号分隔值导入SQL服务器中的数据。从csv文件导入时,SQL Server中可接受哪种DateTime格式?

下面是一个示例线

37;3.90;13;3.25;14;1.70;0;1;0-1;2;3;1;3-1;1;29/1/2000 5:00:00 μμ; 

如果我没有错的,最后一个字段29/1/2000 5:00:00 μμ是不能接受的,因为它包含培养的数据。

内的专用域,像这样

row += $"{v.KickOff.ToString()};"; 

其中KickOffDateTime数据类型创建的。

没关系,或者在导入后我会有问题吗?

+0

如何导入该CSV文件?你使用BulkCopy还是某种CSV解析器? – Steve

+2

千万不要使用'mm/dd/yyyy'作为数据交换目的的日期表示(事实上,绝对不要使用'mm/dd/yyyy',因为它很愚蠢 - 但这是另一回事)。使用'yyyy-mm-dd'。 – Tomalak

+0

@Steve我将使用sql管理工作室的导入过程 – OrElse

回答

0

好了,在这里结束了

row += $"{v.KickOff.ToString("yyyy-MM-dd HH:mm:ss")};"; 

我会看看这个在服务器端

-1

将此格式转换为使用此代码的时间跨度格式 使用timeOfDay格式获取日期想将其转换为时间跨度,它将整个日期时间转换为整数,这是将其插入到mysql中的最简单方法。

TimeSpan timeOfday=startTime.TimeOfDay; DateTime fullstartDateTime =startDate.Add(timeOfday);

0

因为你问DateTime值的有效格式的SQL,我假设你正在使用某种存储过程来保存数据。

几点建议:

  1. 始终尝试使用ISO-8601在以往任何时候可能。
  2. 使用实体框架来保持数据
  3. 解析你的价值观和映射到模型(例如:从您的CSV解析您DateTime值和映射到实体的DateTime属性)

// 2017-10-28T01:48:04.2399705-07:00 
var local = DateTime.Now.ToString("o"); 

// 2017-10-28T08:51:10.1058821Z 
var utc = DateTime.UtcNow.ToString("o");