【发布时间】:2019-10-26 18:00:19
【问题描述】:
我有一个带有 MM/DD/YYYY 格式的日期列的 csv 文件。当我使用 SSIS 将 csv 文件加载到 SQL Server 表时,我希望具有以下格式:YYYY-MM-DD。
问题是当 csv 文件包含一个日期值在 1 到 12 之间的日期时,日期和月份会交换。
例子:
12/06/2019 in csv file -> 2019-06-12 in SQL Server table: DD and MM are swapped
MM/DD/YYYY -> YYYY-MM-DD
如何在 SQL Server 表中包含 2019-12-06?
提前感谢您的回答。
【问题讨论】:
-
日期没有格式。它们是二进制值。如果您使用日期类型来存储日期,例如
date、datetime等,则存储的值将没有任何格式。仅当将字符串解析为日期或将日期格式化为字符串以进行显示时,格式才适用 -
您确定您没有将 client 工具(SSMS 只是一个客户端工具)使用的格式与某些实际日期格式混淆吗? SSMS 使用 ISO8601 格式以避免混淆。其他客户端工具(例如桌面应用程序)将使用用户的区域设置来格式化日期
-
12/06/2019到底是什么意思? 6 月 12 日(今天)还是 12 月 6 日?如果是 6 月 12 日,则 CSV 日期为 DD/MM,而不是 MM/DD。用于解析平面文件中的日期和数字的区域性由平面文件源中的LocaleID设置控制。如果您想要MM/DD,请将语言环境更改为en-US -
您确定数据指的是 12 月 6 日吗?文件包含 今天的 记录的可能性要大得多(6 月 12 日)并且没有逆转。
YYYY-MM-DD是用于显示日期的 ISO8601 格式。其组件的顺序不会改变
标签: sql-server csv datetime ssis etl