1

使用 SQL Server 2008、Visual Studio 2008。

尝试将数据从字符串列转换为派生日期列。该字符串可以有两种格式,一种是:“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”格式。

我究竟做错了什么 ?谢谢。

4

1 回答 1

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))
于 2012-08-02T03:33:46.860 回答