SSIS 在生产 SQL 服务器上将 .csv 日期字段转换为不正确的格式
我正在使用 SSIS 2005 将 .csv 文件中的数据读取到 SQL Server 2005 数据库中。我对 .csv 使用平面文件连接管理器,对结果行使用 OLEDB 连接管理器。
.csv 文件包含一个英国格式的日期字段 (dd/mm/yyyy),例如 7/3/2011 表示 2011 年 3 月 7 日。该列随后映射到SQL Server 数据库。
我面临的问题是,虽然在开发计算机上一切正常,但在生产环境中使用时,日期在插入 SQL Server 时会更改为 US (mm/dd/yyyy) 格式(如果有效) 。是否有某个地方可以指定目标日期时间字段所需的区域/格式(在本例中为英国),可能是包中的某个位置或生产服务器本身的某些设置?
提前致谢, 蒂姆
I am using SSIS 2005 to read data off a .csv file into a SQL Server 2005 Database. I am using a Flat File connection manager for the .csv and an OLEDB Connection Manager for the resulting rows.
The .csv file contains a field which is a date in UK format (dd/mm/yyyy), which may be written, say, 7/3/2011 for 7th March 2011. This column is then mapped onto the equivalent datetime field in the SQL Server database.
The problem I am facing is that, while everything works fine on the development machine, when used on the production environment, the dates get changed to US (mm/dd/yyyy) format (if valid), when they are inserted into SQL Server. Is there some place where the desired Region/Format (in this case UK) for the destination datetime field can be specified, maybe somewhere in the package or some setting on the production server itself?
Thanks in advance,
Tim
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在平面文件连接管理器编辑器中设置区域设置,或在连接的“属性”框中设置区域设置 ID(相同)。将其设置为“英语(英国)”将正确解释日期,因为 SSIS 使用包或数据流中的区域设置,而不是操作系统区域设置。
请注意,您必须在源而不是目标处设置格式:日期时间是 MSSQL 中的二进制格式,因此日期不会以特定于区域设置的格式在内部存储。
You can set the locale in the Flat File Connection Manager Editor or LocaleID in the Properties box for the connection (same thing). Setting it to "English (United Kingdom)" will interpret the dates correctly, because SSIS uses the locale in the package or data flow, not the OS locale.
Note that you have to set the format at the source, not the destination: datetime is a binary format in MSSQL so dates aren't stored internally in a locale-specific format anyway.