Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于将字符串转换为日期的SSIS表达式_Ssis - Fatal编程技术网

用于将字符串转换为日期的SSIS表达式

用于将字符串转换为日期的SSIS表达式,ssis,Ssis,使用SQLServer2008、VisualStudio2008 正在尝试将数据从字符串列转换为派生日期列。 字符串可以有两种格式,一种是“dd/mm/yy”(可以假定为世纪20),另一种是“dd/mm/yyyy”。e、 g.“2012年5月2日”、“2002年12月23日”、“2012年8月13日” 所以我对派生列尝试了如下表达式: DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBST

使用SQLServer2008、VisualStudio2008

正在尝试将数据从字符串列转换为派生日期列。 字符串可以有两种格式,一种是“dd/mm/yy”(可以假定为世纪20),另一种是“dd/mm/yyyy”。e、 g.“2012年5月2日”、“2002年12月23日”、“2012年8月13日”

所以我对派生列尝试了如下表达式:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))
但Visual Studio给出了错误: 表达式无效,或内存不足错误

它接受一个更简单的表达式,如:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)("20" + SUBSTRING(DateReceived,7,2) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))
但此表达式仅适用于“dd/mm/yy”格式


我做错了什么?谢谢。

没关系,错误是由于打字错误造成的。(正在对列类型而不是列名调用RTRIM)

以下工作:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DateReceived)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))