在不解析子字符串的情况下与 SSIS 中的日期保持一致
Consistent work with dates in SSIS without parsing substrings
在我的工作场所,我们有一个 ETL 工作流,其中我们有 Python 代码来完成转换的大部分繁重工作。输出为CSV文件,我们使用SSIS将其内容上传到数据仓库。
我注意到数据仓库中的日期列(类型 DT_DBDATE)有些不一致,并意识到 SSIS 一直在错误地从 CSV 文件中读取美国格式的日期。
- 如果只有一种解释日期顺序的有效方法,它会将其正确解释为
mm/dd/yyyy
,因此 4 月 20 日正确登陆数据库。
- 如果有两种有效的日期顺序解释方式,它将解释为
dd/mm/yyyy
,因此 4 月 1 日变为 1 月 4 日。
这让我很困惑,因为首先将日期格式化为 mm/dd/yyyy
的全部原因是它曾经导致德国标准 dd.mm.yyyy
出现问题!此外,我无法想象这种行间行为变化是处理真实数据集的正确方式的情况。
我尝试在 Internet 上研究这个问题,似乎该行为可能取决于 SSIS 运行 所在计算机的本地化。这对我们来说是不可接受的情况,因为我们混合了具有不同本地化的计算机。
我看过许多文章,它们解释了如何读取具有特殊日期格式的 CSV 数据,解析子字符串,然后“手动”构建日期。我发现解决方案有些复杂,并且由于我可以直接控制 Python 输出的日期格式,所以我非常喜欢 SSIS 正确解释日期格式的解决方案,而不管 OS 的设置如何主机。例如,能够在某处将输入日期格式作为参数给出就真的很好了。
关于如何在没有字符串操作变通方法的情况下正确获取日期的任何建议?
您可以在连接管理器编辑器中的常规下设置区域设置
在这种情况下是英国英语,但如果更改为美国英语,它将把日期解释为 MMDDYYYY
在我的工作场所,我们有一个 ETL 工作流,其中我们有 Python 代码来完成转换的大部分繁重工作。输出为CSV文件,我们使用SSIS将其内容上传到数据仓库。
我注意到数据仓库中的日期列(类型 DT_DBDATE)有些不一致,并意识到 SSIS 一直在错误地从 CSV 文件中读取美国格式的日期。
- 如果只有一种解释日期顺序的有效方法,它会将其正确解释为
mm/dd/yyyy
,因此 4 月 20 日正确登陆数据库。 - 如果有两种有效的日期顺序解释方式,它将解释为
dd/mm/yyyy
,因此 4 月 1 日变为 1 月 4 日。
这让我很困惑,因为首先将日期格式化为 mm/dd/yyyy
的全部原因是它曾经导致德国标准 dd.mm.yyyy
出现问题!此外,我无法想象这种行间行为变化是处理真实数据集的正确方式的情况。
我尝试在 Internet 上研究这个问题,似乎该行为可能取决于 SSIS 运行 所在计算机的本地化。这对我们来说是不可接受的情况,因为我们混合了具有不同本地化的计算机。
我看过许多文章,它们解释了如何读取具有特殊日期格式的 CSV 数据,解析子字符串,然后“手动”构建日期。我发现解决方案有些复杂,并且由于我可以直接控制 Python 输出的日期格式,所以我非常喜欢 SSIS 正确解释日期格式的解决方案,而不管 OS 的设置如何主机。例如,能够在某处将输入日期格式作为参数给出就真的很好了。
关于如何在没有字符串操作变通方法的情况下正确获取日期的任何建议?
您可以在连接管理器编辑器中的常规下设置区域设置
在这种情况下是英国英语,但如果更改为美国英语,它将把日期解释为 MMDDYYYY