【发布时间】:2017-06-30 17:20:27
【问题描述】:
我正在将许多文件加载到 SQL SERVER 数据库中。我有一个平面文件,其中有一个日期列作为string[DT_STR]。
我的数据库中有两个“日期字段”。一个是varchar,一个是datetime。
转换datetime 列没有问题,我只是在必要时使用数据转换/派生列。但是,这个varchar 专栏给我带来了麻烦。此列的数据库值应采用 yyyymmdd 格式。但是,在这个单一文件中,日期的格式会发生变化。
通常我会在这里使用SUBSTRING(...) 表达式,但困难在于这些日期的格式会发生变化。一些值的例子可能是
08/16/2017
8/16/2017
08/6/2017
08/06/2017
10/6/2017
10/06/2017
这使挑战变得更加困难。我尝试了LEN([DATE]) == NUM_HERE ? do_THING : OTHER_CALC,但这种方法失败了,因为10/6/2017 的长度与8/06/2017 相同,这会给我错误的结果。有没有人对此有很好的解决方法?
【问题讨论】:
-
您应该能够使用
SELECT CAST('08/16/2017' AS datetime)将所有这些示例直接转换为日期时间
标签: sql-server date ssis etl