使用SQL Server 2008,Visual Studio 2008.
尝试将数据从字符串列转换为派生的Date列。 该字符串可以采用两种格式:" dd / mm / yy" (可以假设世纪20),或者" dd / mm / yyyy" 。例如" 02/05/12"," 23/12 / 02"," 13/08/2012"。
所以我为Derived列尝试了这样的表达式:
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"格式。
我做错了什么?感谢。
答案 0 :(得分:2)
没关系,错误是由于拼写错误造成的。 (在列类型上调用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))