4

我在varchar中有这个Timestr28/12/2016 16:39:01

如何在 SSIS 中将列派生为日期和时间

期望的结果

日期2016-12-28格式的日期

时间16:39:01格式

到目前为止,这就是我在 SQL 中所拥有的

SELECT FORMAT(CAST((SUBSTRING(TimeStr,12,8)) AS DATETIME),'hh:mm:ss tt') AS Time

代码在此处输入图像描述

结果在此处输入图像描述

4

2 回答 2

4

使用 SSIS 表达式,您可以尝试:

日期

(DT_DBDATE)(SUBSTRING(Timestr,7,4) + "-" + 
SUBSTRING(Timestr,4,2) + "-" + SUBSTRING(Timestr,1,2))

时间

(DT_DBTIME)(SUBSTRING(Timestr,12,8))

您的派生列设置应如下所示:

在此处输入图像描述

更新:避免毫秒DT_DBTIME

(DT_DBTIME2,0)(SUBSTRING(Timestr,12,8))

希望能帮助到你。

于 2017-03-07T21:00:38.530 回答
1

要将您的 varchar 转换为日期时间,如果您的数据合理,我会建议 Try_Convert() 如果 2012+,如果不只是 Convert() 可以解决问题。

try_convert(datetime,Timestr,103)  --  returns 2016-12-28 16:39:01.000

使用 Format()

Declare @Timestr varchar(25) = '28/12/2016 16:39:01'
Select DateTime12 = format(try_convert(datetime,@Timestr,103),'yyyy-MM-dd hh:mm:ss tt')
      ,DateOnly   = format(try_convert(datetime,@Timestr,103),'yyyy-MM-dd')
      ,Time12     = format(try_convert(datetime,@Timestr,103),'hh:mm:ss tt')
      ,Time24     = format(try_convert(datetime,@Timestr,103),'HH:mm:ss')

退货

DateTime12                DateOnly      Time12         Time24
2016-12-28 04:39:01 PM    2016-12-28    04:39:01 PM    16:39:01
于 2017-03-07T20:39:35.093 回答